Python Glossary English

все Python 3inspectфункция

inspect.isabstract()

проверка вида объекта

Проверяет, что класс абстрактный: у него остались нереализованные абстрактные методы, и экземпляр создать нельзя.

Синтаксис

inspect.isabstract(object) -> bool

Работает только с классами на ABCMeta (abc.ABC): @abstractmethod в обычном классе ничего не запрещает — isabstract даёт False, и экземпляр спокойно создаётся. Наследник, реализовавший все абстрактные методы, уже не абстрактный. Сам abc.ABC абстрактным не считается: абстрактных методов у него нет.

Примеры

import abc, inspect
class Shape(abc.ABC):
    @abc.abstractmethod
    def area(self): ...
class Square(Shape):
    def area(self): return 1
class Plain:
    @abc.abstractmethod
    def area(self): ...
print(inspect.isabstract(Shape), inspect.isabstract(Square))  # → True False
print(inspect.isabstract(Plain), type(Plain()).__name__)  # → False Plain
print(inspect.isabstract(abc.ABC))  # → False

См. также

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