functools.partialmethod()
(class) functools.partialmethod(func, /, *args, **keywords)
Вернуть новый дескриптор partialmethod, который ведет себя как partial, за исключением того, что он предназначен для использования в качестве определения метода, а не для прямого вызова.
func должен быть дескриптором или вызываемым (оба объекта, как и обычные функции, обрабатываются как дескрипторы).
Когда func является дескриптором (например, обычная функция Python, classmethod (), staticmethod (), abstractmethod () или другой экземпляр partialmethod), вызовы __get__
делегируются базовому дескриптору, а в качестве результата возвращается соответствующий объект partial.
Когда func вызывается без дескриптора, соответствующий связанный метод создается динамически. Это ведет себя как обычная функция Python при использовании в качестве метода: аргумент self будет вставлен в качестве первого позиционного аргумента, даже перед args и keywords, предоставленными конструктору partialmethod.
Пример:
>>> class Cell:
... def __init__(self):
... self._alive = False
... @property
... def alive(self):
... return self._alive
... def set_state(self, state):
... self._alive = bool(state)
... set_alive = partialmethod(set_state, True)
... set_dead = partialmethod(set_state, False)
...
>>> c = Cell()
>>> c.alive
False
>>> c.set_alive()
>>> c.alive
True
Новое в версии 3.4.
Last updated
Was this helpful?