tg-me.com/BookPython/3634
Last Update:
Популярный способ объявить абстрактный метод в 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
BY Библиотека Python разработчика | Книги по питону
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/BookPython/3634