我想强制执行一个Child类来设置几个属性(实例变量),以实现我在python 2.7中使用abstractproperty装饰器。这是示例代码:
from abc import ABCMeta, abstractproperty class Parent(object): __metaclass__ = ABCMeta @abstractproperty def name(self): pass class Child1(Parent): pass class Child2(Parent): name = 'test' class Child3(Parent): def __init__(self): self.name = 'test' obj_child1 = Child1()
Child1对象的创建产生了预期的错误。
obj_child2 = Child2()
创建Child2对象的工作正常,因为设置了抽象属性“名称”
然而
obj_child3 = Child3()
给出TypeError:无法使用抽象方法名称实例化抽象类Child3
我不明白:尽管在初始化 方法中设置了属性“名称” ,但为什么创建Child3对象会引发类型错误。
我的要求是在子类的方法内设置属性。解释child2类有什么问题以及是否有更好的方法来强制子类在方法中设置属性,这将对我有所帮助。提前致谢。