[Python代码使用带有()的函数/方法之类的变量?

问题描述 投票:0回答:1

例如,我正在查看使用诸如方法之类的布尔变量的现有代码库,

class Manager(object):

def __init__(self):
    self._on_elect_callback = None
    self._on_revoke_callback = None
    self.... = ... (..., event_listener = self._event)

def _event(self, type):
    on_elect_callback = self._on_elect_callback
    if type == SOME_CONSTANT:
        ....
        if on_elect_callback:
            on_elect_callback()

def do_this(self, on_elect_function): 
    self._on_elect_callback = on_elect_function
    if self....:
        on_elect_function()

Q1。我很好奇在最后一行的if条件下如何将on_elect_callback用作函数与()一起使用。那不是布尔变量吗?我搜索了存储库,但没有定义。它在做什么?

Q2。另外,我想在__init__中设置一个事件的回调函数可以使用的变量,例如“嘿,此事件类型为SOME_CONSTANT,因此将__init__中的变量设置为“ ABCD”(或True),如何我能实现吗?代码上方的方式是做到这一点吗?

[我正在查看一个使用布尔变量的现有代码库,例如方法,例如,类Manager(object):def __init __(self):self._on_elect_callback = None self ....

python callback event-listener
1个回答
0
投票
self._on_elect_callback可能会像self._on_elect_callback = lambda: "I'm a function"中那样被分配一个功能。我认为您认为它应该作为变量的原因是因为它在if表达式中使用。原因是,如果为self._on_elect_callback分配了一个匿名函数,则该表达式将求值为True,因为函数具有方法bool,该方法默认情况下返回True。关于第2季度,当然可以,函数是python中的对象,因此您可以将它们传递给高阶函数,或将它们分配为变量,如示例中所示
© www.soinside.com 2019 - 2024. All rights reserved.