python 魔术方法__str__及__repr__方法详解
__str__ 方法 __repr__
__str__ 自定义类的时候__str__方法的作用。这个魔术方法__str__主要的作用是在print(实例对象)
的时候返回你指定的字符串,一般来说在定义类的时候不用重写这个方法的,但是在一些注重交互的模块类的
编写上,可能会重写这个类。如果当前的类没有定义__str__方法默认集成 object 父类的__str__方法
__repr__()和__str__方法类似是 Python 类中的一个特殊方法,由 object 对象提供,
该方法主要实现 "内容描述" 功能:当直接打印类的实例化对象时,系统将会自动调用该方法,输出对象的
自我描述信息,用来告诉外界对象具有的状态信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class MyString: def __init__( self ): pass a = MyString() print (a) 此时输出的结果,是当前的类的实例,以及对应的内存地址 <__main__.MyString object at 0x009DEE10 > 使用__str__方法 注意:这个方法必须要保证返回的是一个 str 类型的数据 class MyString: def __init__( self ,name): self .name = name def __str__( self ): return self .name a = MyString( "实例的name:" ) print (a)输出结果:输出结果,当前实例的名称来源于 __str__方法定义的返回值 # 实例的name: |
总结: 可以看到,这个时候print(实例),将会出现我们指定好的str内容。这就是__str__()方法的用处
__repr__方法 :
1 2 3 4 5 6 7 8 9 | class MyClass: def __repr__( self ): return "hello 你好 " m = MyClass() # 输出结果:hello 你好 print (m) |
_repr__ 方法 和 __str__方法同时存在:
1 2 3 4 5 6 7 8 9 10 11 12 | class MyClass: def __str__( self ): return "hello word---1" def __repr__( self ): return "hello word---2" m = MyClass() print (m) |
m = MyClass()
print(m)
可以看到str的优先级比repr方法要高.在没有str方法时会自动调用repr方法
两个方法都不存在时,则继承 object 的__str__ 方法
输出结果: hello word---1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现