Python Glossary English

Python 3.10+abcфункция

abc.update_abstractmethods

abc-служебные

Пересчитывает набор абстрактных методов класса (напр. после динамического добавления методов; Python 3.10+).

Синтаксис

abc.update_abstractmethods(cls)

Набор __abstractmethods__ считается один раз, в момент создания класса, поэтому всё, что дописывает или подменяет методы позже (декоратор класса, миксин, ручное присваивание), оставляет его протухшим: класс либо спокойно создаётся с недореализованными методами, либо отказывается создаваться, хотя всё уже реализовано. Функция возвращает тот же самый класс, так что её удобно вешать декоратором.

Примеры

import abc
class C: pass
print(abc.update_abstractmethods(C) is C)   # → True
import abc
class Base(abc.ABC): pass
Base.run = abc.abstractmethod(lambda self: None)
print(abc.update_abstractmethods(Base).__abstractmethods__)   # → frozenset({'run'})

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности