[英]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.