Отсюда:
Код: Выделить всё
abc.abstractmethod(function)Использование этого декоратора требует, чтобы метакласс класса был ABCMeta или
был производным от него. Класс, имеющий метакласс, производный от ABCMeta
, не может быть создан, если все его абстрактные методы и
свойства не переопределены.
И здесь
Вы можете применить декоратор @abstractmethod к таким методам, как draw()
, которые должны быть реализованы; Затем Python вызовет исключение для
классов, которые не определяют этот метод. Обратите внимание, что исключение
возникает только тогда, когда вы действительно пытаетесь создать экземпляр подкласса
, у которого отсутствует метод.
Я использовал этот код, чтобы проверить это:
Код: Выделить всё
import abc
class AbstractClass(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def abstractMethod(self):
return
class ConcreteClass(AbstractClass):
def __init__(self):
self.me = "me"
c = ConcreteClass()
c.abstractMethod()
Код: Выделить всё
Подробнее здесь: https://stackoverflow.com/questions/719 ... nimplement
Мобильная версия