1、重载构造函数和减法运算__init__,__sub__
#file number.py
class Number:
def __init__(self,data):
self.data = data
def __sub__(self,other):
return Number(self,self.data-other)
2、索引和分片:实现__getitem__方法的类可以实现索引和分片
class Indexer:
def __getitem__(self,index):
return index**2
x = Indexer()
print(x[2]) #输出:4
for i in range(5):
print(x[i],end=' ') #输出:0,1,4,9
或者
class Index:
data = [1,2,3,4,5]
def __getitem__(self,index):
print("index:",index)
return self.data[index]
__getitem__也是一种重载的迭代方式,可以用于:成员测试关系in,列表解析,内置函数map,list,tuple,以及类型构造方法都会自动调用__getitem__
3、迭代器对象:__iter__,__next__
尽管__getitem__也实现了迭代方法,但是一般通常先尝试__iter__方法,然后在尝试__getitem__方法来对对象进行迭代
迭代环境是通过