J'ai implémenté ce court exemple pour essayer de démontrer un modèle de délégation simple. Ma question est. Cela ressemble-t-il à une délégation que j'ai comprise?Délégués en python
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')
Que faites-vous avec la classe 'Handler'? – Santa
Cela fait partie d'un exemple plus grand, et j'ai oublié de m'en débarrasser quand je l'ai posté ici. – MattyW
Dans le code ci-dessus, vos classes Geo, Steve et Andy ont une fonction Handle dans laquelle vous appelez getattr(). Je recommande de vérifier que la fonction existe réellement dans l'objet délégué avec hasattr() avant d'appeler getattr. Je voulais juste le signaler parce que cela pourrait être une source d'accidents. – Ashbay