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

Python打印自定义类实例属性时返回内存地址无法获取目标值

问题解答

问题原因

你传入Dog构造方法的owner参数是Person类的实例对象,因此dog.owner存储的是完整的Person实例,而非单独的主人姓名字符串。Python打印自定义类实例时,默认输出格式为<模块名.类名 object at 内存地址>,这就是你看到的异常输出的来源。

解决方案

方案1:直接访问实例的姓名属性

Person实例的姓名存在自身的name属性中,调整打印语句即可拿到目标值:

# 原语句 print(dog.owner) 修改为
print(dog.owner.name)

执行后输出:

Mick Jagger

方案2:自定义类的字符串表示(推荐的面向对象实现方式)

如果需要直接打印dog.owner就能得到可读的姓名,可以在Person类中实现__str__方法,自定义实例被转为字符串时的返回值:

class Person():
    def __init__(self,name):
        self.name = name
    def __str__(self):
        return self.name


mick = Person("Mick Jagger")
dog = Dog("Stanley","French Bulldog",mick)
# 不需要修改原打印语句,直接输出姓名
print(dog.owner)

运行后同样会输出Mick Jagger,这种写法更符合面向对象的封装逻辑,后续需要调整Person实例的打印格式时,只需要修改__str__方法即可,不需要改动所有调用打印的代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:01:11