显然我可以制作拼写错误,这就是这个问题的原因不习惯动态输入的语言而且缺乏抱怨
我正在尝试创建一个python类,它将具有一个可以设置为带有1个参数的函数指针的成员。
最初我试过(简化示例)
class MyClass():
def __init__(self):
self.__myFunc = None
# func is a pointer to a function that takes 1 paramater
def setFunc(self, func):
self.__myFunc = func
def getData(self):
return 42
def handleData(self):
data = self.getData()
if self.__myFunc is not None:
self.__myFunc(data)
# Separate function not in class
def MyPrint(d)
print(d)
m = MyClass()
m.setFunc(MyPrint)
m.handleData()
我遇到的第一个问题是self.__myFunc is not None
if if test总是返回False所以我暂时删除了
我遇到的第二个问题是self.__myFunc(data)
行TypeError: 'NoneType' object is not callable
在self.__myFunc = None
后self.__myFunc = lambda: None
更改为TypeError: <lambda>() takes 0 positional arguments but 1 was given
修复第二个问题的更改导致了{{1}}
理想情况下,我想这样做而不创建一个带参数的新函数,什么也不做,因为这看起来非常hacky。
答案 0 :(得分:1)
您的示例代码中存在大量语法错误 - 而且您正在创建函数(def MyClass
)而不是类(class MyClass
)。这是您的代码的工作版本:
def getData():
return [1, 2, 3, 4, 5]
class MyClass(object):
def __init__(self):
self.__myFunc = None
# func is a pointer to a function that takes 1 paramater
def setFunc(self, func):
self.__myFunc = func
def handleData(self):
data = getData()
if self.__myFunc is not None:
self.__myFunc(data)
def MyPrint(d):
print(d)
m = MyClass()
m.setFunc(MyPrint)
m.handleData()
检查你和我之间的差异 - 在某些情况下,它们非常微妙。