Python 使用类外定义的类内自函数

Python 使用类外定义的类内自函数,python,class,Python,Class,我正在做一个项目,在这个项目中,我有一个类在它的_uinit__;中接受一个函数,如下所示 class Example: def __init__(self, func,param1,param2): self.function=func self.param1=param1 self.param2=param2 def doSomething(self): print("hi there") 显然,在创建此类的实

我正在做一个项目,在这个项目中,我有一个类在它的_uinit__;中接受一个函数,如下所示

class Example:
    def __init__(self, func,param1,param2):
        self.function=func
        self.param1=param1
        self.param2=param2
    def doSomething(self):
        print("hi there")
显然,在创建此类的实例时,我会将函数传递给构造函数。但是,如果在该函数中,我想引用doSomething和param1,该怎么办。如果我的函数是在类之外定义的,我可以访问它们吗

例如,假设这是我将传递给构造函数的函数

def func(self):
    self.doSomething()
    return(self.param1)

如果这个函数在类定义中,这显然是可行的。在这种情况下,我如何才能使其工作?

从评论中可以看出,这正是您想要的:

class Example:
    def __init__(self, func, param1, param2):
        self.function = lambda: func(self)
        self.param1 = param1
        self.param2 = param2

    def doSomething(self):
        print("hi there")


def func(self):
    self.doSomething()
    return(self.param1)


example = Example(func, 1, 2)
example.function()

但是,我觉得这是解决任何问题的错误方法。

您可以将它们作为函数的参数。@Goyo但是,这意味着无论何时我试图调用函数,我都必须引用类的所有参数,尽管函数在类中。没有更好的方法吗?我建议您尝试以所示的方式在类之外定义函数,看看它是否有效……结果可能会让您感到惊讶。@RushabhMehta这很奇怪,您的代码甚至不调用func。这有什么使用案例?你能用一个清晰的例子来代替dosmething,param1等吗?func的定义是什么?@RushabhMehta那么为什么不应该呢?它只是一条普通的老蟒蛇。此外,您选择的无意义的名称也使代码难以解释。你不懂什么?哦,我明白了,lambda函数。我以前没见过。现在这很有道理!