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