Python 3.4+functoolsфункция
functools.partialmethod
частичное применение
Дескриптор для частичного применения метода: как partial, но для методов класса (учитывает self).
Синтаксис
attr = functools.partialmethod(method, *args)
До 3.14 обычный partial в теле класса не срабатывал: у объекта partial не было __get__, поэтому self не подставлялся и вызов через экземпляр уходил без первого аргумента — ради этого случая и появился partialmethod. С 3.14 partial стал дескриптором, но экземпляр он ставит после зафиксированных позиционных аргументов, а не на место self, так что для методов по-прежнему нужен partialmethod. Зафиксированные позиционные аргументы встают сразу после self, так что «замораживать» ими удобно только первые параметры; всё остальное передавайте по имени.
Примеры
from functools import partialmethod
class Cell:
def set(self, v): self.value = v
set_on = partialmethod(set, True)
c = Cell()
c.set_on()
print(c.value) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности