Python __str__()方法
前面章节中,我们经常会直接输出类的实例化对象,例如:
class PLanguage: def __init__(self): self.name = "塞兔子Python网" self.add = "https://www.cnblogs.com/qingchengzi/p/18055134" p_obj = PLanguage() print(p_obj) print(p_obj.__str__())
程序运行结果:
<__main__.PLanguage object at 0x0000000000547358> <__main__.PLanguage object at 0x0000000000547358>
通常情况下,直接输出某个实例化对象,本意往往是想了解该对象的基本信息,例如该对象有哪些属性,它们的值各是多少等等。但默认情况下,我们得到的信息只会是“类名+object at+内存地址”,对我们了解该实例化对象帮助不大。
以本节开头的程序为例,执行 print(p_obj) 等同于执行 print(p_obj.__str__()),程序的输出结果是一样的(输出的内存地址可能不同)。
和 __init__(self) 的性质一样,Python 中的每个类都包含 __str__() 方法,因为 object 类包含 __str__() 方法,而 Python 中所有的类都直接或间接继承自 object 类。
默认情况下,__str__() 会返回和调用者有关的 “类名+object at+内存地址”信息。当然,我们还可以通过在类中重写这个方法,从而实现当输出实例化对象时,输出我们想要的信息。
class PLanguage: def __init__(self): self.name = "塞兔子Python网" self.add = "https://www.cnblogs.com/qingchengzi/p/18055134" def __str__(self): return "PLanguage[name=" + self.name + ",add=" + self.add + "]" p_obj = PLanguage() print(p_obj) print(p_obj.__str__())
程序运行结果:
PLanguage[name=塞兔子Python网,add=https://www.cnblogs.com/qingchengzi/p/18055134]
PLanguage[name=塞兔子Python网,add=https://www.cnblogs.com/qingchengzi/p/18055134]
由此可见,__str__() 方法是类的实例化对象用来做“自我介绍”的方法,默认情况下,它会返回当前对象的“类名+object at+内存地址”,而如果对该方法进行重写,可以为其制作自定义的自我描述信息。
浙公网安备 33010602011771号