2 回答

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
該print函數(shù)在 Python 中不返回,它只是寫(xiě)入stdout; 因此,當(dāng)您調(diào)用sleep實(shí)例的方法時(shí),它只會(huì)打印None.
要解決這個(gè)問(wèn)題,您要做的就是要么return不打印sleep,要么直接調(diào)用它而不將其包含在print語(yǔ)句中。
結(jié)果會(huì)是這樣的,例如:
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貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
所以第一個(gè)打印語(yǔ)句是由于方法print
中的函數(shù)造成的sleep
。正在None
按您的方式打印print(panda1.sleep())
。該sleep
方法不返回任何內(nèi)容,因此None
.
要擺脫None
,您可以簡(jiǎn)單地使用panda1.sleep()
而不是print(panda1.sleep())
。
但是,更好的選擇可能是返回您希望函數(shù)打印的消息sleep
,然后使用print(panda1.sleep())
添加回答
舉報(bào)