如何从多个父类中继承同名变量



我遇到了有关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)

可变路径将存储母亲和父亲的文件目录。当我打印出父亲和母亲词典时,我注意到母亲词典以某种方式从父亲那里获取了所有信息。在阅读了Mro http://python-history.blogspot.com/2010/06/method-resolution-order-order.html并观看Raymond Hettinger的2015 Pycon Video Super是Super是Super是Super Is Super之后来自Testfather的变量,完全忽略了TestMother的路径变量。

我的问题是,测试奇币有没有办法使用其两个父母的路径,而不仅仅是服用具有较高Mro的一个。我知道更改可变名称会有用,但是雷蒙德说,必须有更好的方法。

testChild不能隐式继承两者,因为显而易见的名称碰撞:testchild.path不能同时具有两个值。由于您尚未描述您要访问两个值的测试儿童所需的语义,因此我不确定您真正需要的解决方案。

但是,您 can __ INT __ INT __ 函数上展开,将名称存储在testchild中,但您喜欢的列表 - 也许是两个字符串的列表?

相关内容

  • 没有找到相关文章

最新更新