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
相关产品推荐
相关产品推荐

