从列表 Python 错误中打印 __init__ 对象 [重复]

Posted

技术标签:

【中文标题】从列表 Python 错误中打印 __init__ 对象 [重复]【英文标题】:Printing __init__ object from list Python error [duplicate] 【发布时间】:2019-06-13 03:21:14 【问题描述】:

我正在尝试根据我的班级设置从列表中打印一个对象。

from math import *
import time

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

people = [MyClass("David",17),
MyClass("George",63),
MyClass("Zuck",12),
MyClass("Mark",18)
]

print(people[2])

但它会打印出:ma​​in.MyClass object at 0x0000000003129128> 我希望它打印“Zuck”

【问题讨论】:

这是默认表示,不是错误。你想让它打印什么? 请更新您的问题以包含您的预期输出。 你还没有告诉 Python 如何打印你的类!已在此处回答:***.com/questions/4932438/… 【参考方案1】:

那是因为你的数组包含对象,所以当你打印它们时,它们被打印为对象表示。我知道你想要的是打印它的内容。

为此,您必须使用 __str__ 方法指定打印时要如何呈现实例:

from math import *
import time

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

    def __str__(self):
        return "name: , age: ".format(self.name, self.age)

【讨论】:

我想这样做,但我必须等待 4m 还有一个问题,最后一行不能是return "name: , age: ".format(name, age) 你可以返回任何东西,甚至是像"Hello"这样的常量 在您的情况下,您会收到错误消息,因为agename实例变量,因此它们必须使用self. 进行限定。如果它们在__str__() 的主体中声明,它们可以在没有自我限定的情况下被引用,但它们将是与__init__() 中声明的变量不同的变量。 哦,是的,我想我明白了,我很抱歉我的愚蠢。谢谢

以上是关于从列表 Python 错误中打印 __init__ 对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

我是不是必须覆盖 python 的列表函数?

Python学习_3_列表

从尾到头打印链表-Python

《python编程——从入门到实践》_笔记2_列表简介

Python – 魔法方法

python---从尾到头打印链表