我正在尝试使用抽象方法(addfeature)实现一个抽象超类(Base),子类将覆盖该方法。
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:无法使用抽象方法 em 实例化抽象类 Child”
为什么?em 应该是类属性,而不是方法(当然也不是抽象方法)