Вероятно, self._on_elect_callback
будет назначена функция, как в self._on_elect_callback = lambda: "I'm a function"
. Я думаю, что причина, по которой вы думаете, что это должна быть переменная, заключается в том, что она используется в выражении if. Причина в том, что если self._on_elect_callback
назначена функция, выражение будет оценивать как True
, поскольку функции поддерживают метод bool
, который по умолчанию возвращает 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()