[英]Python Passing a Function to an Object
我正在尝试创建一个类,该类允许用户创建一个自定义按钮对象,该对象包含按钮的外观属性以及一个函数,我希望它们能够在调用按钮的executeFunction()命令时运行。
def foo():
print "bar"
class Button(object):
def __init__(self, name, color, function):
self.name = name
self.color = color
self.function = function
# I want to be able to run the function by calling this method
def executeFunction(self):
self.function()
newButton = Button("Example", red, foo())
newButton.executeFunction()
这是正确的方法还是执行这种操作的特定方法?
你应该有
newButton = Button("Example", red, foo)
这将传递foo,而不是像代码那样传递foo的返回值。
在python中,函数也是对象,并且可以传递。 您的代码中有一个小错误,并且是简化此错误的简便方法。
第一个问题是您在将函数foo
传递给Button
类时正在调用它。 这会将foo()
的结果传递给类,而不是函数本身。 我们只想传递foo
。
我们可以做的第二件事是将函数分配给一个名为function的实例变量(或者,如果需要,可以执行newButton.function()
),然后可以通过newButton.function()
对其进行调用。
def foo():
print "bar"
class Button(object):
def __init__(self, name, color, function):
self.name = name
self.color = color
self.function = function
newButton = Button("Example", red, foo)
newButton.function()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.