面向对象魔术方法之__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