[英]Python super constructors — which arguments do you put in the child method?
我創建了一個包含參數name
和colour
的“ Animal”類,以及一個名為“ Pig”的子類,該子類應繼承“ Animal”的name
和colour
,但還應采用一個新參數TailType
。
到目前為止,這是我所做的:
class Animal(object):
def __init__(self, name, colour):
self.name = name
self.colour = colour
def get_name(self):
return self.name
def set_name(self, newName = ""):
self.name = newName
def set_colour(self, newColour = ""):
self.colour = newColour
def get_colour(self):
return self.colour
def __str__(self):
return self.get_name() + ' : ' + self.colour
class Pig(Animal):
def __init__(self, name, colour, tailType):
super().__init__()
self.tailType = tailType
當我初始化“ Pig”類時,我不確定要在__init__
定義中放入哪些參數; 應該是name
和colour
,還是name
+ colour
+ tailType
?
另外,此子類是否繼承Animal的__str__
表示方法,還是必須在“ Pig”子類中再次編寫該方法?
當我初始化一個子類時,我真的不確定哪個參數放在哪里。 我看過示例,它們都有非常簡單的案例,其中只有一個參數(自我)。
如果我嘗試去做
john = Pig('John', 'pink', 'curly')
我懂了
TypeError: __init__() missing 2 required positional arguments: 'name' and 'colour'
。
從概念上講,超類和子類是有意義的,但是當涉及到它們的語法時,我真的很努力。
注意:請不要向我介紹什么是超類構造函數的一般解釋:我已經閱讀了很多超類構造函數,但仍然不太了解如何在這種情況下應用它們。
只需傳遞name
和colour
。
class Pig(Animal):
def __init__(self, name, colour, tailType):
super().__init__(name, colour)
self.tailType = tailType
認為它是super()
為我提供了從父級綁定到我的對象的方法。 它作為輸入是什么? name
和colour
? 然后,讓它傳遞name
和colour
。
是的, __str__
是像其他任何方法一樣繼承的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.