- 论坛徽章:
- 0
|
动态插入方法的例子。
- import datetime
- class Dummy():
- pass
- o = Dummy()
- o.getTimestamp = lambda : datetime.datetime.now().strftime('%c')
- print o.getTimestamp()
复制代码
这是我所说的俗手的方法,不过这个方法最容易理解。如果你对Py能作什么还不了解到话,这个例子还是比较容易懂的。
真正搞产品的时候,应该做一个metaclass,然后让类去继承这个metaclass。我不太懂AOP,但好像AOP就是搞这个的。
第三点,最简单的用途是用在回调函数方面。
- def echo(s) :
- return s
- CMD_MAP = {
- 'ECHO' : echo,
- 'UPPERCASE' : lambda s : s.upper()
- }
- class MyProtocol(LineReceiver):
- def lineReceived(self, line):
- try :
- cmd, content = line.split(' ', 1)
- except :
- content = ''
- cmd = line.strip()
- self.transport.write(CMD_MAP[cmd](content) + '\r\n')
- self.transport.loseConnection()
复制代码
这是我工作当中写的程序的一个片段,当然做了一些修改,不过大致的意思没变。这里,这个protocol实现的命令是完全可以扩展的。你只要定义一个接受string,同时返回string的函数,然后到CMD_MAP里面注册一把就行了。 |
|