一、__str__
-
触发条件: print([对象]) 的时候触发
__str__
的执行 class Person: def __init__(self, name): self.name = name def __str__(self): print("打印对象时触发了__str___") return f"对象名字:{self.name}" P1 = Person("淘小欣") P2 = Person("乔布斯") print(P1) '''输出内容 打印对象时触发了__str___ 对象名字:淘小欣 ''' print(P2) '''输出内容 打印对象时触发了__str___ 对象名字:乔布斯 ''' print(P2.name) # 乔布斯
-
返回一个看起来字典格式的字符串示例
# 示例一: class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"{self.__dict__}" P1 = Person("库克", 99) print(P1) # {'name': '库克', 'age': 99} # 示例二: import json class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return json.dumps(self.__dict__) P1 = Person("淘小欣", 22) print(P1) # {"name": "\u6dd8\u5c0f\u6b23", "age": 22}
二、__repr__
-
触发条件:在命令窗口中直接写[对象]时触发
__repr__
>>> class Person: ... def __init__(self, name): ... self.name = name ... def __repr__(self): ... print("命令窗口直接写对象触发了__repr__") ... return f"名字 : {self.name}" # ????返回值也必须是一个字符串, 否则报错 ... >>> P1 = Person("佩奇") >>> P1 命令窗口直接写对象触发了__repr__ 名字 : 佩奇 >>> P1.name '佩奇'