【问题标题】:How to print the values of objects stored in a list [duplicate]如何打印存储在列表中的对象的值[重复]
【发布时间】:2021-03-29 16:22:32
【问题描述】:

我正在尝试遍历存储在名为myusers 的python 列表中的User 对象,然后打印每个对象。这就是我所做的:

class User:
    def __init__(self,name,age):
        self.name = name
        self.age = age

myusers= [User("Fred", "30"), User("Doe", "20")] 

for i in range(2):
    print(str(myusers[i]))

我从上面得到的是内存位置如下:

<__main__.User object at 0x000001FD807B4250>
<__main__.User object at 0x000001FD807F13A0>

但是,我希望得到:

User("Fred", "30")
User("Doe", "20")

我见过这个问题:https://stackoverflow.com/questions/59115308/print-out-objects-stored-in-a-list 但它没有回答我的问题,因为我在 print 函数中使用了 str 。当我没有得到这个值时,谁能告诉我?

【问题讨论】:

  • 你需要在你的类中写一个__str__ 函数,这样你的类就知道如何把它自己变成一个字符串。
  • 该问题中接受的答案正是您需要的!
  • 另外,您不需要在打印前通过str() 显式转换为字符串。如果参数不是字符串,print() 已经为您执行此操作。

标签: python


【解决方案1】:

正如 cmets 中所说,您应该定义一个 __str__ 方法,该方法定义了如何将您的对象表示为字符串。

class User:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __str__(self):
        return f'User("{self.name}", "{self.age}")'

myusers= [User("Fred", "30"), User("Doe", "20")] 

for i in range(2):
    print(myusers[i])

【讨论】:

    猜你喜欢
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2023-03-22
    相关资源
    最近更新 更多