web-dev-qa-db-fra.com

Python - Est-il correct de passer soi-même à une fonction externe

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?

38
elssar

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 selfgetpasséesàfonctions ( etaussiàméthodes , etpairopérateurs ) touslesheure .

48
user4815162342