Il existe un modèle assez simple appelé le Builder Pattern
où les méthodes renvoient essentiellement une référence à l'objet courant, de sorte qu'au lieu d'enchaîner les appels de méthodes les uns sur les autres, ils sont enchaînés sur la référence de l'objet.
Le modèle Builder actuel décrit dans le livre Gang of Four est un peu verbeux (pourquoi créer un objet Builder) et renvoie plutôt une référence à self
de chaque setXXX()
pour un enchaînement propre des méthodes.
Cela pourrait ressembler à quelque chose comme ceci en Python :
class Person:
def setName(self, name):
self.name = name
return self ## this is what makes this work
def setAge(self, age):
self.age = age;
return self;
def setSSN(self, ssn):
self.ssn = ssn
return self
Et vous pourriez créer une personne comme ça :
p = Person()
p.setName("Hunter")
.setAge(24)
.setSSN("111-22-3333")
Gardez à l'esprit que vous devrez effectivement enchaîner les méthodes avec eux en les touchant. p.a().b().c()
car Python n'ignore pas les espaces blancs.
Comme le note @MaciejGol dans les commentaires, vous pouvez assigner à p
comme ça pour enchaîner avec les espaces blancs :
p = (
Person().setName('Hunter')
.setAge(24)
.setSSN('111-22-3333')
)
Que ce soit ou non le meilleur Je ne peux pas dire quel est le style/idée pour Python, mais c'est un peu comme ça que ça se présenterait en Java.