1. 构造序列
__len__(self)
__getitem__(self, key)
__setitem__(self, key, value)
__delitem__(self, key)
>>> class MySeq:
def __init__(self):
self.lseq = ["I","II","III","IV"]
def __len__(self):
return len(self.lseq)
def __getitem__(self, key):
if 0 <= key < 4:
return self.lseq[key]
>>> m = MySeq()
>>> for i in range(4):
print(m[i])
I
II
III
IV
>>>
2. 构造iter
__iter__(self)
__next__(self)
>>> class MyIter:
def __init__(self,start,end):
self.count = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.count < self.end:
r = self.count
self.count += 1
return r
else:
raise StopIteration
>>> for i in MyIter(1,10):
print(i)
1
2
3
4
5
6
7
8
9
>>>
3. 构造可比较类
__lt__()
__le__()
__gt__()
__ge__()
__eq__()
__ne__()
>>> class Point:
def __init__(self,x,y):
self.x = x
self.y = y
def __lt__(self,oth):
return self.x < oth.x
def __gt__(self,oth):
return self.y > oth.y
>>> pa = Point(0,1)
>>> pb = Point(1,0)
>>> print(pa < pb)
True
>>> print(pa > pb)
True
>>>
4. 构造可运算类
__add__()
__sub__()
__mul__()
__div__()
>>> class Point:
def __init__(self,x,y):
self.x = x
self.y = y
def __add__(self,oth):
return Point(self.x + oth.x , self.y + oth.y)
def info(self):
print(self.x,self.y)
>>> pa = Point(1,2)
>>> pb = Point(3,4)
>>> pc = pa + pb
>>> pc.info()
4 6
>>>