Пост канала
Популярный способ объявить абстрактный метод в Python — это выбросить исключение NotImplementedError: def human_name(self): raise NotImplementedError Хотя этот подход довольно распространён и даже поддерживается IDE (например, PyCharm считает такие методы абстрактными), у него есть недостаток: ошибка возникает только при вызове метода, а не при создании экземпляра класса. Чтобы избежать этой проблемы, используйте модуль abc: from abc import ABCMeta, abstractmethod class Service(metaclass=ABCMeta): @abstractmethod def human_name(self): pass Также важно помнить, что NotImplemented — это не то же самое, что NotImplementedError. NotImplemented — это специальное значение (как True и False), а не исключение. Оно используется, например, в специальных методах (__eq__(), __add__() и др.), чтобы сообщить Python, что операция не реализована для данного типа, и попытаться вызвать альтернативный метод (например, если a.__add__(b) возвращает NotImplemented, Python попробует вызвать b.__radd__(a)). 👉 @BookPython
Открыть в MAX- Просмотры
- 679
- ER
- 1,2%
- Реакции
- 8