通过类名和父类名访问类属性

时间:2018-07-19 11:19:53

标签: python

请考虑以下代码段:

def populate(l):
    l.append(1)


class First:
    __obj__ = []


class Second(First):
    populate(First.__obj__)

    def __init__(self):
        pass

    def __call__(self):
        for i in Second.__obj__:
            print(i)


a = Second()
a()

运行时,它将输出1,因此看来First.__obj___Second.__obj__指向同一个对象。是真的吗?在继承的情况下,类属性如何工作?

1 个答案:

答案 0 :(得分:0)

名称__obj__First类的属性。因为Second类继承了First类,所以它也继承了类属性__obj__First.__obj__Second.__obj__都引用相同的list对象。实例的self.__obj__也引用相同的对象。

这是因为list是可变的。对于像str这样的不可变类型,情况并非如此。