如何在基类方法中使用派生类变量

时间:2015-02-25 03:28:31

标签: python oop multiple-inheritance

我有一个类的层次结构,它们彼此继承,看起来像这样:

class BaseClass(object):
    def __init__(self):
        self.localLog = logging.getLogger(testName)
        self.var1 = 'a'

    def printVar(self):
        print self.var1

class SubClass1(BaseClass):
    def __init__(self):
        self.var1 = 'b'
        super(SubClass1, self).__init__()

class SubClass2(SubClass1):
    def __init__(self):
        self.var1 = 'c'
        super(SubClass2, self).__init__()

现在我要实例化SubClass2并使用BaseClass本地printVar变量调用SubClass2 var1方法:

obj = SubClass2()
obj.printVar()

我想要发生的是变量c一直爬到BaseClass并传递给printVar方法。但是,我得到的是变量a

我意识到我会通过删除super行来获得所需的结果,但我必须让他们能够访问所有继承类中的self.localLog变量。

有没有办法实现我想要的,或者我应该为每个班级保留一个本地printVar方法?

1 个答案:

答案 0 :(得分:3)

似乎只需在在子类中设置super(...).__init__()之前调用var1 即可轻松解决问题。