运算符重载
常见的运算符重载方法
__init__ 构造函数 对象建立:X = Class(args)
__del__ 析构函数 X对象收回
__add__ + X+Y
__or__ | X | Y
__str__ 打印转换 print(X)
__call__ 函数调用 X(*args, **kargs)
__getattr__ 点号运算 X.undefined
__setattr__ 属性赋值语句 X.any = value
__delattr__ 属性删除 del X.any
__getattribute__ 属性获取 X.any
__getitem__ 索引运算 X[key], X[i:j]
__setitem__ 索引赋值 X[key] = value, X[i:j] = sequence
__delitem__ 索引和分片删除 del X[key], delX[i:j]
__len__ 长度 len(X)
__bool__ 布尔测试 bool(X)
__lt__, __gt__,__le__, __ge__, __eq__, __ne__ 特定的比较 X<Y, X>Y, X<=Y, X>=Y, X==Y, X!=Y
__radd__ 右侧加法 other+X
__iadd__ 原地加法 X += Y
__iter__, __next__ 迭代环境 I=iter(X), next(I)
__contains__ 成员关系测试 item in X
__index__ 整数值
__enter__, __exit__ 环境管理器
__get__, __set__ 描述符属性
__new__ 创建 在__init__之前创建对象