我正在學習類和方法,試圖修改一個簡單的Python代碼,以便我可以使用方法傳遞一個屬性值。 我可以為setyear()方法傳遞屬性。但是,我無法使用它,并像agecalc()方法那樣進行簡單的數學運算(例如,年齡計算)。 不知道你能不能指出,為什么我得到的是0而不是10?
class Dog。
def __init__(self, name, born, breed)。
self.name = name
self.born = born # 年出生。
self.breed = breed
self.year = 00
def setyear(self, year)。
#self.year = year-self.born : 自身.year = year-self.born
self.year = year
def agecalc(self, year)。
self.age = self.year - self.born ##****一直給我0?。
mydog1 = 狗 (name = "Lassy", born = 2015, breed = "Husky")
mydog1.setyear(2025) # 設定我們希望計算狗的年齡的年份。
# 以下是次理想。
print ("dog age =", mydog1.year - mydog1.born)
#尋找用agecalc方法替換上述行,即列印(agecalcl(2025))。
# 也嘗試了下面的方法,但它一直給我`None`。
print (mydog1.agecalc(2025)
uj5u.com熱心網友回復:
你沒有回傳年齡;你只是設定了一個屬性。
mydog1.agecalc(2025)
print(mydog1.age)
另外,你可以讓agecalc回傳年齡,而不是存盤年齡。當前的年份并不像狗的出生年份那樣是狗的一個真正的屬性。
class Dog。
def __init__(self, name, born, breed)。
self.name = name
self.born = born # 年出生。
self.breed = breed
def agecalc(self, year)。
return year - self.born
mydog1 = Dog(name="Lassy"/span>, born=2015, breed="Husky"/span>)
print("My dog is", mydog1.agecalc(2025), "year old.")
uj5u.com熱心網友回復:
你的函式應該是這樣的:
def agecalc(self, year)。
self.age = year - self.born
return self.age
你把year(你作為引數傳入的年份)和self.year
此外,你還列印了,所以我猜你想回傳值或者直接訪問年齡(不是那么OOP'ish,但python允許)
mydog1.agecalc(2025)
print(mydog1.age)
uj5u.com熱心網友回復:
你缺少了回傳陳述句 try:
def agecalc(self, year)。
self.age = year - self.born
return self.age
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/313119.html
標籤:
