You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python定义Person类后打印对象未输出name,如何修正?

问题解决:让print(Person)实例输出指定名称

首先,你遇到的问题大概率是__str__方法的缩进出现了错误,导致Python没把它识别为Person类的实例方法。咱们直接看修正方案:

正确的代码实现

确保__str__方法和__init__方法处于同一缩进层级(都属于Person类的内部方法),修改后的代码如下:

class Person:
    age = 0
    name = ''
    
    def __init__(self, personAge, personName):
        self.age = personAge
        self.name = personName
    
    def __str__(self):
        return self.name

d = Person(24, 'ram')
print(d)  # 现在会输出: ram

为什么这样能解决问题?

  • __str__是Python的特殊魔术方法,当你用print()打印对象,或者把对象转换为字符串(比如str(d))时,Python会自动调用这个方法返回定制的字符串。
  • 如果你的__str__方法缩进错误(比如跑到了类的外面),Python就会使用默认的对象字符串格式,也就是你看到的<__main__.Person object at 0x...>。

额外调试小技巧

如果之后需要在交互式环境里查看更详细的对象信息,可以同时定义__repr__方法——它会在直接输入对象名时显示结构化信息:

def __repr__(self):
    return f"Person(age={self.age}, name='{self.name}')"

这时在命令行输入d,会输出Person(age=24, name='ram'),方便调试。

内容的提问来源于stack exchange,提问作者Chidananda Nayak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:45:09