繁体   English   中英

如何从多个父类继承相同的名称变量?

[英]How to inherit same name variables from multiple parent classes?

我遇到了一些关于python多重继承的问题。

class TestFather(object):
    fathers = {}
    path = "/C"

    def __init__(self):
        super(TestFather, self).__init__()
        # self.fathers = file_to_dict(self.path)


class TestMother(object):
    mothers = {}
    path = "/D"

    def __init__(self):
        super(TestMother, self).__init__()
        # self.mothers = file_to_dict(self.path)


class TestChild(TestFather, TestMother):
    def __init__(self):
        super(TestChild, self).__init__()


t = TestChild()
help(t)

变量路径将存储母亲和父亲的文件目录。 当我打印出父亲和母亲的词典时,我注意到母亲词典以某种方式从父亲那里获取所有信息。 通过阅读Guido在MRO上的博客http://python-history.blogspot.com/2010/06/method-resolution-order.html并观看Raymond Hettinger的2015 PyCon视频超级超级后,我意识到TestChild类只继承了路径来自TestFather的变量,并完全忽略TestMother中的路径变量。

我的问题是,TestChild是否有办法使用其两个父母各自的路径而不是仅使用具有更高MRO的路径。 我知道改变变量名称会起到作用,但正如雷蒙德所说,必须有更好的方法。

由于明显的名称冲突,TestChild无法隐式继承两者:TestChild.path不能同时具有两个值。 由于您没有描述您希望TestChild访问这两个值的语义,我不确定您真正需要什么解决方案。

但是,您可以扩展__init__函数,将名称存储在TestChild中但是您喜欢 - 也许是两个字符串的列表?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM