Я пытаюсь реализовать абстрактный суперкласс (Base) с абстрактным методом (addfeature), который класс Child переопределит.атрибут класса считается абстрактным методом в python 2.7 - модуль abc
from lxml.builder import ElementMaker
from abc import ABCMeta, abstractmethod
class Base(object):
__metaclass__ = ABCMeta
ns = "http://www.foo.com/bar"
em = ElementMaker(namespace=ns, nsmap={'bar': ns})
@abstractmethod
def addfeature(self):
pass
class Child(Base):
def addfeature(self):
pass
child_instance = Child()
Этот код не менее с
"TypeError: Can't instantiate abstract class Child with abstract methods em"
Почему? em должен быть атрибутом класса, а не методом (и, конечно, не абстрактным).
Спасибо за четкое объяснение и решение! –