繁体   English   中英

Python将函数传递给对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM