我实际上已经完成了这个练习(几乎),但是我只是被困在一个对象内部的__str__
的一个小问题上。如果我这么做
elif choice == "9":
try:
for i in sworm:
print(i)
except TypeError:
None`
然后它将只打印出列表中第一个对象的详细信息(其中只有两个对象),例如--sworm = [crit,crit1]
当我尝试这个的时候
^{pr2}$然后我获取:-在
[<__main__.Critter object at 0x02B54AD0>, <__main__.Critter object at 0x02B5B190>]
这是我的前半部分
class Critter(object):
"""A virtual pet"""
def __init__(self, name, hunger = random.randint(1,50), boredom = random.randint(1,50)):
self.name = name
self.hunger = hunger
self.boredom = boredom
def __pass_time(self):
self.hunger += 1
self.boredom += 1
def __str__(self):
print ("Critter object\n")
print (self.name)
print (self.hunger)
print (self.boredom)
提前谢谢。在
Python列表总是将内容显示为表示,在对象上调用
repr()
。在您也可以通过指定
__repr__
方法来钩住它。或者,不要直接打印列表,只打印内容:或者把它们连接成一条长串:
^{pr2}$请确保从
__str__
方法返回一个值:因为它是由
print()
打印的返回值。在如果您需要
__str__
方法来工作,那么您应该从中返回一个字符串-如下所示请阅读文档here
问题是:
看,这个方法实际上不应该打印任何东西。相反,它应该返回要打印的内容。所以,你需要这样做:
^{pr2}$相关问题 更多 >
编程相关推荐