【发布时间】:2022-01-18 21:22:12
【问题描述】:
如果我运行这个程序以便在属性“名称”之后对我的列表进行排序,我只会收到这个:
[<__main__.Gericht object at 0x00000190D292FE50>, <__main__.Gericht object at 0x00000190D292FD90>, <__main__.Gericht object at 0x00000190D292FEB0>, <__main__.Gericht object at 0x00000190D292FDF0>]
你能帮我得到真正的结果吗?
class Gericht:
def __init__(self, name, preis, calories, alergene = []):
self.name = name
self.preis = preis
self.calories = calories
self.alergene = alergene
def sortbyName(input):
sort = sorted(input, key=lambda gericht: gericht.name)
return sort
speisekarte = [Gericht("Spaghetti", 7.5, 750, [1, "a"]), Gericht("Brotstulle", 3, 250, []), Gericht("Tofu", 13, 634, [1, 2, 3, "b"]), Gericht("Eis", 1, 120, ["c", "d"]) ]
print(sortbyName(speisekarte))
【问题讨论】:
-
你期待什么?
-
作为参考,请尝试
print(Greicht(...)),其中...是一些有效输入 -
如果你想要一个漂亮的花哨字符串,请查看如何实现
__str__和/或__repr__ -
当心
alergene = []!见stackoverflow.com/questions/1132941/…。简单的解决方法是设置默认的None,然后在__init__的正文中说self.alergene = alergene or []。