Python Glossary English

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Сообщить о неточности