簡體   English   中英

在 python 中的 __str__ 方法上調用 super()?

[英]Call super() on __str__ method in python?

我已經玩了幾天的 OOP,現在我試圖了解super()方法是如何工作的。

我遇到的問題是我想從另一個類調用我的__str__函數並繼承超類中的東西。

我閱讀了 Python 繼承: Concatenating with super __str__但該解決方案不起作用。

我擁有的代碼是這個

class Taxi:

    def __init__(self, drivername, onduty, cities):
        self.drivername = drivername
        self.onduty = onduty
        self.cities = cities

    def __str__(self):
        return '{} {} {}'.format(self.drivername, self.onduty, self.cities)

class Type(Taxi):

    def __init__(self, drivername, onduty, cities, model):
        super().__init__(drivername, onduty, cities)
        self.model = model

    def __str__(self):
        super(Taxi, self).__str__() #Tried as well with super().__str__()
        return '{}'.format(self.model)

mymodel = Type('Foobar', True, 'Washington', 'Volvo')
print(mymodel)

所以我希望 Taxi 類中的__str__函數返回給定的值,然后子類中的字符串類返回最后一個值。

我該怎么做?

您完全忽略了調用__str__的超類定義的結果。 你可能想要一些類似的東西

def __str__(self):
    prefix = super().__str__()
    return '{} {}'.format(prefix, self.model)

調用super().__str__()不會做任何神奇的事情。 它只是另一個方法調用,所以你需要這樣對待它。 除非您這樣做,否則返回值不會神奇地吸收到您的方法中。

您也可以使用f-strings

def __str__(self):
    return f'{self.model}'

暫無
暫無

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

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