python运算符重载笔记
运算符重载:重写Python内置魔法方法来实现。
魔法方法:都是以双下划线开头和结尾的,类似于__X__的形式。
python通过这种特殊的命名方式来拦截操作符,以实现重载。当Python的内置操作运用于类对象时,Python会去搜索并调用对象中指定的方法完成操作。
Python在调用操作符时会自动调用这样的方法,eg:如果类实现了__add__方法,当类的对象出现在+运算符中时会调用这个方法。
class OperatorOverloading:
_size = 999
# def __init__(self): # 定义_size值的两种方法
# self._size = 999
def __len__(self):
"""
len()
:return:
"""
return self._size
def set_size(self, size):
self._size = size
if __name__ == '__main__':
gy = OperatorOverloading()
gy._size = 123 # gaib
gy.set_size(456)
print(len(gy))
- __len__为系统定义好的的方法名,使用len方法时,本质上就是调用了对象的__len__方法。
- __len__方法的参数、返回值类型、方法名是确定的,函数体可以自己定义。
例如:构造函数和析构函数:init__和__del。它们的主要作用是进行对象的创建和回收,当实例创建时,就会调用__init__构造方法。当实例对象被收回时,析构函数__del__会自动执行。