Python 使用类外定义的类内自函数
我正在做一个项目,在这个项目中,我有一个类在它的_uinit__;中接受一个函数,如下所示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") 显然,在创建此类的实
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函数。我以前没见过。现在这很有道理!