Python—可以将self传递给外部函数吗

Python—可以将self传递给外部函数吗,python,self,Python,Self,我有一个类a,它是由一堆其他类继承的。其中一些函数有一些类似的函数,如果能在其他地方定义这些函数并由需要它们的类调用,那就太好了。但是这些函数调用在超类中定义的函数 class A(): def imp_func(*args): # called by the child class functions Class B(A): def common_func(self): # some stuff self.imp_func(*a

我有一个类a,它是由一堆其他类继承的。其中一些函数有一些类似的函数,如果能在其他地方定义这些函数并由需要它们的类调用,那就太好了。但是这些函数调用在超类中定义的函数

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对象
作为参数,我可以从助手函数内部调用
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)
这就解决了问题


但我应该这样做吗?这是蟒蛇式的吗

这没有任何问题-
self
是一个类似于任何其他对象的对象,可以在任何欢迎其类型/行为的对象的上下文中使用


在Python中,如标准库所示,
self
(,)的实例。

这绝对没有问题
self
只是对实例的引用,它不是私有的,传递给其他函数也不危险。为什么需要这样做
B
A
继承
imp\u func
,因此您可以在
B.common\u func
中调用
self.imp\u func(*args)
,而不会出现问题。@FlorianBrucker在多个类中的多个函数中,不仅有一个函数,还有一对函数是从父类调用的,有些函数被多次调用。这会导致非常臃肿的类和函数。编写这些函数也很耗时。使用helper类将节省时间、精力,并使代码更干净、更易于维护。在示例1中,您有
B.common_func
调用
A.imp_func
。在示例2中,您有
B.common_func
调用
helper_func
调用
A.imp.func
。在第二种情况下,您需要编写更多的代码。@elssar:在这种情况下,请用一个更好地说明您的问题的示例更新您的问题。现在,您的第二个示例中的代码越来越难理解,就像Rob一样ᵩ 在非常酷的隐藏式超链接中,多个示例显示+50。