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