例如,我正在查看使用像方法一样的布尔变量的现有代码库:
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()
问题:
我很好奇,如何在最后一行的if条件之后将on_elect_callback
用作带有()的函数。那不是布尔变量吗?我搜索了存储库,但没有定义。它在做什么?
另外,我想在事件的回调函数可以使用的__init__
中设置一个变量,例如“嘿,此事件类型为SOME_CONSTANT,因此请将__init__
中的变量设置为“ ABCD”(或[C0 ]),如何实现呢?代码上方的方式是这样做的吗?
True
可能会像self._on_elect_callback
中那样被分配一个功能。我认为您认为它应该作为变量的原因是因为它在if表达式中使用。原因是,如果为self._on_elect_callback = lambda: "I'm a function"
分配了一个匿名函数,则该表达式将求值为self._on_elect_callback
,因为函数具有方法True
,该方法默认情况下返回bool
。关于第2季度,当然可以,函数是python中的对象,因此您可以将它们传递给高阶函数,或将它们分配为变量,如示例中所示True