Python 如何解密0x1097ba828处的[<;\uuuu main\uuuuu.Food对象>;
我是python新手。我想显示实际的Python 如何解密0x1097ba828处的[<;\uuuu main\uuuuu.Food对象>;,python,python-3.x,Python,Python 3.x,我是python新手。我想显示实际的名称、值和卡路里而不是[,]我知道这个问题很简单,但如果你能告诉我答案,那将是一个很大的帮助 class Food(object): def __init__(self,n,v,w): self.name = n self.value = v self.calories = w def getValue(self): return self.value def getC
名称、值和卡路里
而不是[,]
我知道这个问题很简单,但如果你能告诉我答案,那将是一个很大的帮助
class Food(object):
def __init__(self,n,v,w):
self.name = n
self.value = v
self.calories = w
def getValue(self):
return self.value
def getCal(self):
return self.calories
def density(self):
return self.getValue()/self.getCal()
def __str__(self):
return '<__main__.Food: '+self.name +' '+ self.value+' ' + self.calories
def buildMenu(self):
menu = []
for i in range(len(values)):
menu.append(Food(self.name[i], self.value[i], self.calories[i]))
return menu
names=['burger','fries','coke']
values=[1,2,3]
calories=[100,200,300]
if __name__ == '__main__':
new = Food(names, values, calories)
print(new.buildMenu())
类食品(对象):
定义初始值(self,n,v,w):
self.name=n
自我价值=v
自身热量=w
def getValue(自身):
回归自我价值
def getCal(自我):
返回自己的卡路里
def密度(自身):
返回self.getValue()/self.getCal()
定义(自我):
return'我做了两个代码更改以获得我认为您需要的内容。第一个是在str函数中将值转换为字符串。第二个是使用它
def __str__(self):
return '<__main__.Food: '+ str(self.name) +' '+ str(self.value)+' ' + str(self.calories)
现在输出为:
我就是这样做的,注意到我们已经创建了两个类:一个单独的Food
和Menu
类。Menu
类有一个add
方法附加到它的foodItems
属性,尽管我觉得这不是真的必要,因为我们可以直接进行属性分配:
m.foodItems = < some list of Food objects >
和输出,如:
您遇到的问题是,您正在打印食品
实例的列表,而不是一次打印一个实例。列表
类型的\uu str\uuuuuu
操作符对列表包含的项目调用repr
,而不是str
,因此您的\uu str uuuuuuu
方法不会运行
一个简单的修复方法是将\uuuu str\uuu
方法重命名为\uuu repr\uu
我要指出的是,有点奇怪的是,您正在构建一个包含名称
、值
和卡路里
值列表的食品
实例,这样您就可以调用该实例上的一个方法来创建一个包含单个值的食品
实例的列表。一种更为Pythoic的方法是将列表传递给ode>classmethod
返回实例列表,中间实例不需要存在:
@classmethod
def buildMenu(cls, names, values, calories):
menu = []
for i in range(len(values)): # consider using zip instead of looping over indexes
menu.append(cls(names[i], values[i], calories[i]))
return menu
你可以在课堂上说:
if __name__ == '__main__':
print(Food.buildMenu(names, values, calories))
尝试定义
\uuuuu repr\uuuuuu
。将您的\uuuu str\uuuuuu
重命名为\uuuuuuu repr\uuuuu
,并根据\uuuuuu repr\uuuu
定义\uuuuuuu str uuuuuuuuuu
。我认为您运行显示的代码可能是重复的,因为len(值)
应该抛出一个错误可能您还应该有一个菜单类,它与您的食物类是分开的。我认为将buildMenu函数作为单个食物对象的一部分是没有意义的。它不清楚(从答案的差异可以看出)添加输出值或勾选一个可接受的答案将清除这一问题。
@classmethod
def buildMenu(cls, names, values, calories):
menu = []
for i in range(len(values)): # consider using zip instead of looping over indexes
menu.append(cls(names[i], values[i], calories[i]))
return menu
if __name__ == '__main__':
print(Food.buildMenu(names, values, calories))