子类抛出AttributeError而不是从超类获取属性

时间:2019-02-22 20:46:45

标签: python python-2.7 inheritance super superclass

我有一个ConfTestSubConfigTest的类,看起来像这样:

class ConfTest():
    config = {
        'account': Account
    }

    def __init__(self,
                 account):
        self.account = account
        ...



class SubConfigTest(ConfTest):
    def __init__(self):
        super(SubConfigTest, self).__init__(account=self.account)
        self.path = install_test(self.ver_config)

我希望SubConfigTest具有ConfTest的所有属性。

运行程序时出现此错误:

super(SubConfigTest, self).__init__(account=self.account,
AttributeError: 'SubConfigTest' object has no attribute 'account'

我要去哪里错了?我觉得我必须在account中的某个地方声明SubConfigTest,但我不怀疑如何或在何处。我之所以只添加它是因为,如果我忽略了它,则会收到一条错误消息:

super(SubConfigTest, self).__init__()

TypeError: init ()恰好接受2个参数(给定1个参数)

1 个答案:

答案 0 :(得分:1)

在第super(SubConfigTest, self).__init__(account=self.account)行中,在调用基类的account=self.account之前对__init__的一部分进行评估,这是定义self.account = account的原因,这就是发生错误的原因。您可能忘记了将account作为参数传递给SubConfigTest.__init__

class SubConfigTest(ConfTest):
    def __init__(self, account):
        super(SubConfigTest, self).__init__(account=account)
        self.path = install_test(self.ver_config)