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