我实现了这个简短的示例来尝试演示一个简单的委托模式。我的问题是。这看起来我已经理解了委托吗?
class Handler:
def __init__(self, parent = None):
self.parent = parent
def Handle(self, event):
handler = 'Handle_' +event
if hasattr(self, handler):
func = getattr(self, handler)
func()
elif self.parent:
self.parent.Handle(event)
class Geo():
def __init__(self, h):
self.handler = h
def Handle(self, event):
func = getattr(self.handler, 'Handle')
func(event)
class Steve():
def __init__(self, h):
self.handler = h
def Handle(self, event):
func = getattr(self.handler, 'Handle')
func(event)
class Andy():
def Handle(self, event):
print 'Andy is handling %s' %(event)
if __name__ == '__main__':
a = Andy()
s = Steve(a)
g = Geo(s)
g.Handle('lab on fire')
一个 Python 技巧:你不需要说:
func = getattr(self.handler, 'Handle')
func(event)
说啊:
self.handler.Handle(event)
我不确定您对 Handler 类做了什么,它在您的示例中没有使用。
在 Python 中,具有大写名称的方法非常非常不寻常,通常是移植某些具有此类名称的现有 API 的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)