Python-можно ли передать self во внешнюю функцию

у меня есть класс, который наследуется куча других классов. Некоторые из них имеют несколько функций, которые похожи, и было бы неплохо иметь эти функции, определенные где-то еще и вызываемые классами, которые в них нуждаются. Но эти функции вызывают функции, определенные в супер классе.

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)

поэтому я создал свои вспомогательные функции, которые принимают self object в качестве аргумента, и я могу назвать imp_func изнутри помощником функции.

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)

это решает проблему.

но должен ли я это делать? Это питон?

1 ответов


С этим нет никаких проблем -self является объектом, как и любой другой, и может использоваться в любом контексте, где объект его типа/поведения будет приветствоваться.

в Python, как показано в стандартной библиотеке, экземпляры self get принят to функции (и и to методы, и даже операторы) все the времени.