本文共 1177 字,大约阅读时间需要 3 分钟。
__str__ 和 __repr__
__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 jsonclass 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'佩奇'
转载地址:http://kwxo.baihongyu.com/