我是否錯誤地繼承并將資料插入到類中?
class Car:
def __init__(self, make, model, year):
self.make = "Honda"
self.model = "Minivan"
self.year = "2010"
class Entry(Car):
def __init__(self, make, model, year, driver, number):
super().__init__(make, model, year)
self.driver = "Mike Drosser"
self.number = 9
def printEntry(self):
print("The make is: " self.make)
print("The model is: " self.model)
print("The year is: " self.year)
print("The driver is: " self.driver)
self.number = str(self.number)
print("The number is: " self.number)
x = Entry()
x.printEntry()
我是否必須Car單獨提交班級資料?
uj5u.com熱心網友回復:
您的代碼有兩個問題:
建構式中的引數都是必需的,因此執行時
Entry()將失敗,因為沒有提供引數。您不對建構式提供的值執行任何操作,而是將特定值存盤在您的實體屬性中。
除此之外,其他一切看起來都很好。
一個簡單的修復是
class Car:
def __init__(self, make, model, year):
self.make = make #we store the provided value
self.model = model
self.year = year
class Entry(Car):
def __init__(self, make, model, year, driver, number):
super().__init__(make, model, year)
self.driver = driver
self.number = number
def printEntry(self):
print("The make is: " self.make)
print("The model is: " self.model)
print("The year is: " self.year)
print("The driver is: " self.driver)
self.number = str(self.number)
print("The number is: " self.number)
x = Entry("Honda", "Minivan", "2010", "Mike Drosser", 9) #this is how a proper call of this class would look like
x.printEntry()
還有其他可以改變的東西,比如你的列印,列印函式可以接受任意數量的引數,所以這print("The number is: " self.number)可以改變為print("The number is:", self.number)這種方式,你不需要先將它顯式轉換為字串,以防數字或任何非字串。
但是為了更加pythonic,將printEntry方法更改為__str__特殊方法,這樣您就可以在其中呼叫print
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
def __str__(self):
#this method should return a string representation of this class,
#for this we use f-string to format the different attributes
return f"The make is: {self.make}\nThe model is: {self.model}\nThe year is: {self.year}"
class Entry(Car):
def __init__(self, make, model, year, driver, number):
super().__init__(make, model, year)
self.driver = driver
self.number = number
def __str__(self):
#here we make use of inheritances to split job
#by letting the Car class handle the part it
#know about and this subclass will add to it
#with the part exclusive to it
return super().__str__() f"\nThe driver is: {self.driver}\nThe number is: {self.number}"
x = Entry("Honda", "Minivan", "2010", "Mike Drosser", 9)
print(x)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/381562.html
