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

问题描述 投票: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()

问题:

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

  2. 另外,我想在事件的回调函数可以使用的__init__中设置一个变量,例如“嘿,此事件类型为SOME_CONSTANT,因此请将__init__中的变量设置为“ ABCD”(或[C0 ]),如何实现呢?代码上方的方式是这样做的吗?

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

True

© www.soinside.com 2019 - 2024. All rights reserved.