Python | 魔法函数`__str__`的用法

发布时间 2023-06-27 19:51:25作者: 张Zong在修行

__str__ 是 Python 内置函数,用于将对象转换为字符串表示形式。在 Python 中,每个类都可以重写 __str__ 方法,以便自定义对象的字符串表示形式。

当使用 print 函数将对象输出到控制台时,Python 会自动调用对象的 __str__ 方法,将其转换为字符串并输出到控制台。因此,对于一个自定义的类,如果想要在输出时以某种格式呈现类的实例对象,可以通过重写 __str__ 方法来实现。

__str__是Python中类对象自带的一个函数(通过其名字也能看出来,和__self__类似),那么它有什么作用呢?首先敲出下面的代码运行一下看看结果是什么:

class Person(object):
    def __init__(self, name = 'tom', age = 10):
        self.name = name
        self.age = age
        self.parent = None
 
tom = Person()
print(tom)

# 唔,在我这里输出了个看起来像是地址的东西
# >>> <__main__.Person object at 0x00000244B4A2EA90>

所以当我们打印一个实例化对象时,打印的其实是这个对象的地址。而通过自定义__str__()函数就可以帮助我们打印对象中相关的内容。

class Person(object):
    def __init__(self, name = 'tom', age = 10):
        self.name = name
        self.age = age
        self.parent = None
    
    def __str__(self):
        return "Your name is: " + self.name
    
tom = Person()
print(tom)

# 唔,果然输出了我们自定义的内容
# >>> Your name is: tom

总结:在python中调用print()打印实例化对象时会调用__str__()函数,如果__str__()中有返回值,就会打印其中的返回值。