Python使用参数将变量初始化为空(None)函数

时间:2014-07-31 04:55:01

标签: python function variables

显然我可以制作拼写错误,这就是这个问题的原因不习惯动态输入的语言而且缺乏抱怨

我正在尝试创建一个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 callableself.__myFunc = Noneself.__myFunc = lambda: None更改为TypeError: <lambda>() takes 0 positional arguments but 1 was given

修复第二个问题的更改导致了{{1}}

理想情况下,我想这样做而不创建一个带参数的新函数,什么也不做,因为这看起来非常h​​acky。

1 个答案:

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

检查你和我之间的差异 - 在某些情况下,它们非常微妙。