2 回答
TA貢獻1840條經驗 獲得超5個贊
該print函數在 Python 中不返回,它只是寫入stdout; 因此,當您調用sleep實例的方法時,它只會打印None.
要解決這個問題,您要做的就是要么return不打印sleep,要么直接調用它而不將其包含在print語句中。
結果會是這樣的,例如:
class Panda:
def __init__(self,name,gender,age):
self.name=name
self.gender=gender
self.age=age
def sleep(self,time=None):
self.time=time
if self.time!=None:
if self.time>=3 and self.time<=5:
self.food='Mixed Veggies'
if self.time>=6 and self.time<=8:
self.food='Eggplant & Tofu'
if self.time>=9 and self.time<=11:
self.food='Broccoli Chicken'
return '{} sleeps {} hours daily and should have {}'.format(self.name,self.time,self.food)
else:
return "{}'s duration is unknown thus should have only bamboo leaves".format(self.name)
panda1=Panda("Kunfu","Male", 5)
panda2=Panda("Pan Pan","Female",3)
panda3=Panda("Ming Ming","Female",8)
print(panda2.sleep(10))
print(panda1.sleep(4))
print(panda3.sleep())
或者
class Panda:
def __init__(self,name,gender,age):
self.name=name
self.gender=gender
self.age=age
def sleep(self,time=None):
self.time=time
if self.time!=None:
if self.time>=3 and self.time<=5:
self.food='Mixed Veggies'
if self.time>=6 and self.time<=8:
self.food='Eggplant & Tofu'
if self.time>=9 and self.time<=11:
self.food='Broccoli Chicken'
print('{} sleeps {} hours daily and should have {}'.format(self.name,self.time,self.food))
else:
print("{}'s duration is unknown thus should have only bamboo leaves".format(self.name))
panda1=Panda("Kunfu","Male", 5)
panda2=Panda("Pan Pan","Female",3)
panda3=Panda("Ming Ming","Female",8)
panda2.sleep(10)
panda1.sleep(4)
panda3.sleep()
TA貢獻1810條經驗 獲得超4個贊
所以第一個打印語句是由于方法print中的函數造成的sleep。正在None按您的方式打印print(panda1.sleep())。該sleep方法不返回任何內容,因此None.
要擺脫None,您可以簡單地使用panda1.sleep()而不是print(panda1.sleep())。
但是,更好的選擇可能是返回您希望函數打印的消息sleep,然后使用print(panda1.sleep())
添加回答
舉報
