引言
1 | 聊一聊__add__,__mul__,__len__,__bool__的作用和自定义,以及__len__和 |
自定义运算符
使用场景
1 | 自定义一个类, 类中有两个属性分别为x和y, 实现a+b a*b的功能,要求a+b实现a.x+b.x |
实现
1 | class V(object): |
自定义bool值
关于if v
1 | 默认情况下我们自己定义的类的实例总是被认为时真的,但是有的时候这个默认值不是我们想要的, |
关于bool()
1 | 像if v/if not v等,python会调用bool(v)方法,而bool(v)背后的调用时尝试调用 |
实现
bool和len都没有
1 | class V(object): |
只有len
1 | class V(object): |
bool与len都有
1 | class V(object): |
如何使对象以字符串的形式表现
为什么要以字符串的形式
1 | 我们把一个对象以字符串的形式表现出来,是为了更好的辨认,方便后续处理或让用户觉得更加直观, |
只用str实现
1 | class Student(object): |
只用repr实现
1 | class Student(object): |
repr与str的不同
1 | 从上边例子可以看出来__repr__与__str__的区别在于,后者实在str()被使用, 或者在 |