J'ai une classe, A, qui est héritée par un tas d'autres classes. Certains d'entre eux ont quelques fonctions qui sont similaires et ce serait bien d'avoir ces fonctions définies ailleurs et appelées par les classes qui en ont besoin. Mais ces fonctions appellent des fonctions définies dans la super classe.
class A():
def imp_func(*args):
# called by the child class functions
Class B(A):
def common_func(self):
# some stuff
self.imp_func(*args)
J'ai donc créé mes fonctions d'aide qui prennent le self object
comme argument et je peux appeler le imp_func
depuis l'intérieur des fonctions d'assistance.
def helper_func(obj, some_args):
# some common stuff
obj.imp_func(*args)
class B(A):
def common_func(self):
# unique stuff
helper_func(self, some_args)
Cela résout le problème.
Mais dois-je faire ça? Est-ce Pythonic?
Il n'y a aucun problème avec cela - self
est un objet comme un autre et peut être utilisé dans n'importe quel contexte où un objet de son type/comportement serait le bienvenu.
En Python, comme illustré par la bibliothèque standard, les instances de self
getpasséesàfonctions ( etaussiàméthodes , etpairopérateurs ) touslesheure .