【问题标题】:How to use derived class variable in baseclass method如何在基类方法中使用派生类变量
【发布时间】:2015-02-25 03:28:31
【问题描述】:

我有一个相互继承的类层次结构,看起来像这样:

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 并使用SubClass2 本地var1 变量调用BaseClass printVar 方法:

obj = SubClass2()
obj.printVar()

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

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

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

【问题讨论】:

  • 你为什么要设置self.var1 之前你打电话给super()?做意味着超类的定义可以覆盖它。
  • @CharlesDuffy 你完全正确!我的小姐。谢谢!

标签: python oop multiple-inheritance


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 2018-05-19
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多