使用在课外定义的自课函数

时间:2018-09-12 17:57:31

标签: python class

我正在一个项目中,我有一个在其__init__中接受如下功能的类

class Example:
    def __init__(self, func,param1,param2):
        self.function=func
        self.param1=param1
        self.param2=param2
    def doSomething(self):
        print("hi there")

很明显,当创建此类的实例时,我会将一个函数传递给构造函数。但是,如果我要在该函数中引用doSomethingparam1,该怎么办。如果我的函数是在类之外定义的,我可以访问它们吗?

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

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

如果此函数在类定义中,则显然可以使用。在这种情况下如何使它工作?

1 个答案:

答案 0 :(得分:2)

从注释中看起来,这就是您想要的:

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()

不过,我觉得这是解决您要解决的任何问题的错误方法。