Python运算符重载

46 阅读1分钟

运算符重载

基本方法

  • 该函数如果存在,将在实例创建期间被调用,返回该实例的一个字符串对象
__str__(self)

  • len函数的参数为实例时,返回该实例的这个函数调用
__len__(self)

对比方法

  • 对象比较;使用cmp函数时调用该函数
__cmp__(self, obj)

  • 小于、小于或等于,< <=
__lt__(self, obj)、__le__(self, obj)

  • 大于、大于或等于,> >=
__gt__(self, obj)、__ge__(self, obj)

  • 等于、不等于,= !=
__eq__(self, obj)、__ne__(self, obj)

运算方法

  • +操作符
__add__(self, obj)
  • -操作符
__sub__(self, obj)
  • *操作符
__mul__(self, obj)
  • /操作符
__div__(self, obj)

序列类型索引切片

  • 索引运算时,该函数被调用
__getitem__(self, index)
  • 每当属性被赋值时,该函数被调用
__setitem__(self, index, value)

映射类型

  • 获取给定key
__getitem__(self, key)
  • 设置给定key
__setitem__(self, key, value)
  • 如果key值不存在,给定的默认值
__missing__(self, key)

demo

class A:
    def __str__(self):
      	return 'abc'
    def __len__(self):
      	return 10
    def __lt__(self,obj):
      	return '哈哈哈哈'
    def __setitem__(self,index,value):
      	print("你好啊")
    def __getitem__(self,index):
      	print(index)
      	return 10
a = A()
print(str(a))
print(len(a))
print(a < 10)
print(a[10:10:10])
print(a)