python-实例访问类属性的一个问题

起因:实例访问类属性,会创建一个独立的同名实例属性

class Demo:
    class_attr = 0

    def __init__(self):
        self.__a = 'a'
        self.self_attr = 'self_attr'


    def set_self_attr(self, value):
        self.class_attr = value

    def get_self_attr(self):
        return self.class_attr

    @classmethod
    def get_class_attr_(cls):
        return cls.class_attr

    @classmethod
    def set_class_attr(cls, value):
        cls.class_attr = value

a = Demo.class_attr


d1 = Demo()
d2 = Demo()
d2.set_self_attr(2)
Demo.class_attr = 1

通常不要使用实例去引用类属性 , 如果实例一定要使用某个属性或属性方法 , 可以另外定义一个实例属性

d1.get_self_attr()#d1是从类属性中获取的值
d2.get_self_attr()#d2是从实例属性中获取的值

posted @ 2021-09-11 18:09  花兒向陽開  阅读(98)  评论(0编辑  收藏  举报