__str__,__repr__
程序员文章站
2022-06-29 07:58:16
[TOC] \_\_str\_\_ 打印时触发 {'a': 1} obj和dic都是实例化的对象,但是obj打印的是内存地址,而dic打印的是有用的信息,很明显dic的打印是非常好的 打印的时候自动触发,但是其实不需要print即可打印 nick:18 打印的时候自动触发,但是其实不需要print即 ......
目录
__str__
- 打印时触发
class foo: pass obj = foo()
print(obj)
<__main__.foo object at 0x10d2b8f98>
dic = {'a': 1} # d = dict({'x':1}) print(dic)
{'a': 1}
- obj和dic都是实例化的对象,但是obj打印的是内存地址,而dic打印的是有用的信息,很明显dic的打印是非常好的
class foo: def __init__(self, name, age): """对象实例化的时候自动触发""" self.name = name self.age = age def __str__(self): print('打印的时候自动触发,但是其实不需要print即可打印') return f'{self.name}:{self.age}' # 如果不返回字符串类型,则会报错 obj = foo('nick', 18)
print(obj) # obj.__str__() # 打印的时候就是在打印返回值
打印的时候自动触发,但是其实不需要print即可打印 nick:18
obj2 = foo('tank', 30) print(obj2)
打印的时候自动触发,但是其实不需要print即可打印 tank:30
__repr__
str函数或者print函数--->obj.__str__()
repr或者交互式解释器--->obj.__repr__()
如果__str__没有被定义,那么就会使用__repr__来代替输出
注意:这俩方法的返回值必须是字符串,否则抛出异常
class school: def __init__(self, name, addr, type): self.name = name self.addr = addr self.type = type def __repr__(self): return 'school(%s,%s)' % (self.name, self.addr) def __str__(self): return '(%s,%s)' % (self.name, self.addr) s1 = school('oldboy1', '北京', '私立')
print('from repr: ', repr(s1))
from repr: school(oldboy1,北京)
print('from str: ', str(s1))
from str: (oldboy1,北京)
print(s1)
(oldboy1,北京)
s1 # jupyter属于交互式
school(oldboy1,北京)
推荐阅读
-
python类中的__str__以及__repr__
-
详解Python中__str__和__repr__方法的区别
-
__str__,__repr__,__add__
-
day26(封装,封装的原理,Property ,setter ,deleter,多态,内置函数 ,__str__ , __del__,反射,动态导入模块)
-
python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法
-
python类中的__str__以及__repr__
-
__str__
-
__str__,__repr__
-
Python 的 __str__ 和 __repr__ 方法对比
-
python类中方法__str__()和__repr__()简单粗暴总结