【问题标题】:Strange message when sorting objects of a class [duplicate]对类的对象进行排序时出现奇怪的消息[重复]
【发布时间】: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 []

标签: python oop


【解决方案1】:

添加类似:

    def __repr___(self) -> str:
        return "Some Gereicht object"

到您的Gereicht 班级。修改以品尝,直到您从打印的列表中获得所需的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-20
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多