Python父类访问子类的类变量

Python父类访问子类的类变量,python,inheritance,Python,Inheritance,我目前正试图在Python项目中实现一些继承,但遇到了一个障碍。我正在尝试创建一个baseParentClass,它将处理许多子类的基本功能。在这个特定的示例中,我尝试使用大量属性(设置为0)初始化一个实例,这些属性存储为子对象中的类变量列表(称为ATTRS)。我不确定如何在父类中使用此属性 class Parent(object): def __init__(): for attr in ATTRS: setattr(self, attr, 0)

我目前正试图在Python项目中实现一些继承,但遇到了一个障碍。我正在尝试创建一个baseParentClass,它将处理许多子类的基本功能。在这个特定的示例中,我尝试使用大量属性(设置为0)初始化一个实例,这些属性存储为子对象中的类变量列表(称为ATTRS)。我不确定如何在父类中使用此属性

class Parent(object):
    def __init__():
        for attr in ATTRS:
            setattr(self, attr, 0)

class Child(Parent):
    #class variable
    ATTRS = [attr1, attr2, attr3]

    def __init__():
        super(Child, self).__init__()
我可以在Child中将ATTRS存储为self.ATTRS,然后在Parent中成功地使用self.ATTRS,但我似乎更愿意将它们存储为类变量

或者,我可以将ATTRS作为参数传递,如下所示:

class Child(Parent):
    #class variable
    ATTRS = [attr1, attr2, attr3]

    def __init__():
        super(Child, self).__init__(ATTRS)
但我想知道这是否会在某种程度上挫败了使用继承的初衷

如果有任何想法、提示或反馈,无论我是不是完全找错了方向,我都将不胜感激


谢谢

你很接近。这项工作:

class Parent(object):
    def __init__(self):
        for attr in self.ATTRS:
            setattr(self, attr, 0)

class Child(Parent):
    #class variable
    ATTRS = ['attr1', 'attr2', 'attr3']

    def __init__(self):
        super(Child, self).__init__()

在这里,您可以在类级别设置
ATTRS
列表,并方便地在基类的
\uuuu init\uuuu
中的
self.ATTRS
中访问它,将其添加到上述答案中

虽然ATTR是子类中的一个类变量,但子类的实例变量能够访问类变量ATTR,因为Python使用名称空间执行以下操作

  • 检查ATTR变量的实例名称空间(self.dict
  • 如果上述操作失败,那么它将检查其类的名称空间。因此,它能够获得类变量的值,尽管它是使用实例变量访问的

  • 当你尝试时会发生什么?