当前位置:  开发笔记 > 编程语言 > 正文

如何在python中使用abstractproperty装饰器强制子类设置属性?

如何解决《如何在python中使用abstractproperty装饰器强制子类设置属性?》经验,为你挑选了0个好方法。

我想强制执行一个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类有什么问题以及是否有更好的方法来强制子类在方法中设置属性,这将对我有所帮助。提前致谢。

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有