面向对象魔术方法之__str__()方法

类型判断要使用type或isinstance, 并不能通过判断print输出是否带引号来判断输出值的类型。

str()与repr()都是python中的内置函数,是直接用来格式化字符串的函数;

而__str__与__repr__ 是在类(对象)中对类(对象)本身进行字符串处理。 注意:__repr__在交互式python环境中产生作用

__str__:返回一个可以用来表示对象的可打印的友好的字符串。

存在下面三种情况:

对字符串,返回本身 
没有参数,则返回空字符串
对类,可通过__str__() 成员控制其行为。该成员不存在,则使用其 __repr__() 成员

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # def __str__(self):
    #     return self.name


p = Person('tom', 19)
print(p)

单纯打印对象名称,出来的是一个地址,地址对于开发者来说没有太大意义

如果想在打印对象名的时候,能够给开发者更多一些信息量

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return '姓名是:' + self.name + ',年龄:' + str(self.age)


p = Person('tom', 19)
print(p)

 触发时机:打印对象名时,自动触发去调用__str__里面的内容

注意:一定要在__str__方法中添加return, return后面的内容就是打印对象看到的内容

总结:魔术方法:普通方法需要调用!而魔术方法是在特定时刻自动触发。

重点:

__init__(创建完空间后,调用的第一个方法),__str__

了解:

__new__    作用:开辟空间

__del__      作用:没有指针引用的时候会调用

__call__      作用:想不想将对象当成函数用


参考链接:
https://blog.csdn.net/Mr_fengzi/article/details/93360845

原文地址:https://www.cnblogs.com/GumpYan/p/12370650.html