簡體   English   中英

Python超級構造函數-您將哪些參數放入子方法中?

[英]Python super constructors — which arguments do you put in the child method?

我創建了一個包含參數namecolour的“ Animal”類,以及一個名為“ Pig”的子類,該子類應繼承“ Animal”的namecolour ,但還應采用一個新參數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__定義中放入哪些參數; 應該是namecolour ,還是name + colour + tailType

另外,此子類是否繼承Animal的__str__表示方法,還是必須在“ Pig”子類中再次編寫該方法?

當我初始化一個子類時,我真的不確定哪個參數放在哪里。 我看過示例,它們都有非常簡單的案例,其中只有一個參數(自我)。

如果我嘗試去做

john = Pig('John', 'pink', 'curly')

我懂了

TypeError: __init__() missing 2 required positional arguments: 'name' and 'colour'

從概念上講,超類和子類是有意義的,但是當涉及到它們的語法時,我真的很努力。

注意:請不要向我介紹什么是超類構造函數的一般解釋:我已經閱讀了很多超類構造函數,但仍然不太了解如何在這種情況下應用它們。

只需傳遞namecolour

class Pig(Animal):
    def __init__(self, name, colour, tailType):
        super().__init__(name, colour)
        self.tailType = tailType

認為它是super()為我提供了從父級綁定到我的對象的方法。 它作為輸入是什么? namecolour 然后,讓它傳遞namecolour

是的, __str__是像其他任何方法一樣繼承的。

暫無
暫無

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

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