gpt4 book ai didi

python - 如何将函数传递给另一个函数以创建 Action 监听器

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:06 25 4
gpt4 key购买 nike

我已经用 Java 编程了 ~2 年,刚刚开始学习 Python(大约 1 周)和 PyGame,一直想创建一个简单的按钮类,但我不想要按钮(按下时会发生什么)被硬编码。在 Python/PyGame 中执行此操作的最佳方法是什么?

我还想过在构造函数中有一个变量,它在调用时被设置为一个函数,例如:def __init__(self, func)

并称呼为

act = Action ()
obj = 按钮( Action )
,

我认为这行不通,但我会在测试时回复大家。

在 Java 中,它会这样调用:

button = new Button("Text");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.out.println("ACTION");
}
}

最佳答案

我知道可以将一个函数对象传递给另一个函数的唯一方法是传递它的标识符:

# listener function
def listener():
print('listening...')

class Button:
def __init__(self, mouse_listener):
mouse_listener() # you call the function inside __init__

button = Button(listener)

在 Python 中,你可以接收一个函数作为参数,因为函数实际上是对象,但它们是特殊的对象,因为它们可以被调用或者它们是可调用对象,实际上你也可以显式调用他们的 __call__ 调用函数的默认函数:

listener.__call__()

但通常你不会那样做。

关于python - 如何将函数传递给另一个函数以创建 Action 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com