簡體   English   中英

從父 class 繼承時,如何將 args 傳遞給 super?

[英]How do args get passed to super when inheriting from a parent class?

編輯:我下面的評論應該被忽略,因為我仍然需要弄清楚如何在這里通過 arguments:

A1 = 孩子('鳥','它會飛','是')

只使用get,不會削減它。

這是我的代碼示例,我不想復制和粘貼所有內容,因為它看起來有點矯枉過正。 我的問題是這個。。

名稱和描述屬性設置為父 class 中的字符串。 A1 是子 class 的一部分。

class Parent:
        def __init__(self, Name, Description, arg3):
            self.__Name = "Dog"
            self.__Description = "It walks"
            self.__arg3 = arg3
        
        def getName(self):
            return self.__Name 
            
        def getDescription(self):
            return self.__Description 

        def getArg3(self):
            return self.__arg3
        
        def setName(self, Name):
            self.__Name = Name

        def setDescription(self, Description):
            self.__Description = Description

        def setArg3(self, Code):
            self.__Arg3 = Arg3

            ```
class Child(Parent): 

     def __init__(self):
          super().__init__()'''

A1 = Child('Bird','It flies','Yes')

A1.getName()
A1.getDescription()
A1.getArg3()

OUTPUT:
DOG      #Why is this not overidden by 'BIRD'
IT WALKS #Same for this
Yes      #This one is fine  



通過在此處給出參數 A1 = Child('Bird','It flies', 'Yes' ) 很容易覆蓋 ARG3。 Name 和 Description 繼續從 Parent 獲取它們的屬性。 為什么是這樣?

您的子類的init沒有收到您傳遞的 arguments。 它應該看起來像

class Child(Parent):
    def __init__(self, Name, Description, arg3):
        super().__init__(Name, Description, arg3)

此外,無論您通過什么 arguments,父 class 都會設置 __Name 和 __Description。

在橡皮鴨調試的經典案例中,我通過使用返回名稱和描述的 get 方法解決了這個問題。

        def Name(self):
            return "Name"

不過,仍然歡迎對 Super() 如何工作的解釋。 有時我會收到如下錯誤:

super().__init__()
TypeError: __init__() takes 1 positional argument but 8 were given

我不知道在使用 super 時你必須通過 arguments 來初始化,所以這讓我很困惑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM