使用像 function/method 和 () 这样的变量的代码?
Code using a variable like a function/method with ()?
我正在查看一个现有的代码库,它像方法一样使用 bool 变量,例如:
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()
问题:
我很好奇 on_elect_callback
是如何像在最后一行的 if
条件之后带有 ()
的函数一样使用的。那不是一些布尔变量吗?我搜索了回购协议,没有定义。它在做什么?
此外,我想在 __init__
中设置一个变量,事件的回调函数可以使用,例如“嘿,这个事件类型是 SOME_CONSTANT,所以设置变量在__init__
到"ABCD"
(或True
)中,如何实现呢?上面代码中的方法是否可以做到?
self._on_elect_callback
可能会被分配到 self._on_elect_callback = lambda: "I'm a function"
中的功能。我认为您认为它是一个变量的原因是因为它在 if 表达式中使用。原因是,如果 self._on_elect_callback
被分配一个函数,表达式将计算为 True
,因为函数支持方法 bool
,默认情况下 returns True
。
关于 Q2,当然可以,函数是 python 中的对象,因此您可以将它们传递给高阶函数,或者将它们分配为变量,如示例
class Manager(object):
def __init__(self, function):
self._on_elect_callback = function # here we assigned the given function
if not function:
# here we define a default attribute using an anonymous function
self._on_elect_callback = lambda: "Default Function"
def _event(self, type):
if self._on_elect_callback:
self._on_elect_callback()
我正在查看一个现有的代码库,它像方法一样使用 bool 变量,例如:
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()
问题:
我很好奇
on_elect_callback
是如何像在最后一行的if
条件之后带有()
的函数一样使用的。那不是一些布尔变量吗?我搜索了回购协议,没有定义。它在做什么?此外,我想在
__init__
中设置一个变量,事件的回调函数可以使用,例如“嘿,这个事件类型是 SOME_CONSTANT,所以设置变量在__init__
到"ABCD"
(或True
)中,如何实现呢?上面代码中的方法是否可以做到?
self._on_elect_callback
可能会被分配到 self._on_elect_callback = lambda: "I'm a function"
中的功能。我认为您认为它是一个变量的原因是因为它在 if 表达式中使用。原因是,如果 self._on_elect_callback
被分配一个函数,表达式将计算为 True
,因为函数支持方法 bool
,默认情况下 returns True
。
关于 Q2,当然可以,函数是 python 中的对象,因此您可以将它们传递给高阶函数,或者将它们分配为变量,如示例
class Manager(object):
def __init__(self, function):
self._on_elect_callback = function # here we assigned the given function
if not function:
# here we define a default attribute using an anonymous function
self._on_elect_callback = lambda: "Default Function"
def _event(self, type):
if self._on_elect_callback:
self._on_elect_callback()