Les délégués en python
J'ai mis en place ce court exemple pour essayer de démontrer une simple délégation de modèle. Ma question est la. Ne ressembler à ce que j'ai compris délégation de droite?
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')
source d'informationauteur MattyW | 2010-09-04
Vous devez vous connecter pour publier un commentaire.
Que le concept de base, oui - en passant sur certaines requêtes entrantes vers un autre objet pour prendre soin de.
Un Python astuce: vous n'avez pas besoin de dire:
il suffit de dire:
Je ne suis pas sûr de ce que vous faites avec votre Gestionnaire de classe, il n'est pas utilisé dans votre exemple.
Et en Python, les méthodes avec majuscule, les noms sont très très rare, généralement à la suite de portage de certaines API existantes avec des noms comme ça.