Сообщить об ошибке.

Класс partialmethod() модуля functools в Python

Заморозить часть аргументов метода класса

Синтаксис:

from functools import partialmethod

new_method = partialmethod(func, /, *args, **keywords)

Параметры:

  • func - дескриптор или метод класса,
  • *args - позиционные аргументы func,
  • *keywords - ключевые аргументы func.

Возвращаемое значение:

  • новый объект, который при вызове ведет себя как func.

Описание:

Класс partialmethod() модуля functools возвращает новый дескриптор метода func, который ведет себя как функция functools.partial(), за исключением того, что он предназначен для использования в качестве определения метода, а не для прямого вызова.

Аргумент func должен быть дескриптором (определяет методы __get__(), __set__() или __delete__() или вызываемым методом класса.

Когда func является дескриптором, таким как обычная функция Python, classmethod(), staticmethod() или другой экземпляр partialmethod(), вызовы __get__ делегируются базовому дескриптору и в результате возвращается соответствующий partial объект.

Когда func не является дескриптором, то соответствующий связанный метод создается динамически. Она ведет себя как обычная функция Python при использовании в качестве метода: аргумент self будет вставлен в качестве первого позиционного аргумента, до аргументов и ключевых слов, предоставленных конструктору partialmethod().

Примеры использования:

from functools import partialmethod

class Cell(object):
    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