簡體   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