class mylist:
class myiterator: #创建迭代器
def __init__(self,lst):
self.data = lst
self.index = 0
def __next__(self):
if self.index >= len(self.data):
raise StopIteration #
r = self.data[self.index]
self.index += 1
return r
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def append(self,v):
self.data.append(v)
def __repr__(self):
return "mylist(%s)" % self.data
def __len__(self):
return len(self.data)
def __iter__(self):
return mylist.myiterator(self.data)
def __add__(self,rhs):
return mylist(self.data + rhs.data)
def __mul__(self,rhs):
return mylist(self.data * rhs)
L1 = mylist([1,2,3])
L2 = mylist([4,5,6])
L3 = L1 + L2
print(L3)
L4 = L2 + L1
print(L4)
L5 = L1 * 2
print(L5)
#------------------反向算术运算符--------------------------------
class mylist:
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def __repr__(self):
return "mylist(%s)" % self.data
def __mul__(self,rhs):
return mylist(self.data * rhs)
def __rmul__(self,lhs):
return mylist(self.data * lhs)
L1 = mylist([1,2,3])
L5 = 2 * L1
print(L5)
#-----------------复合赋值运算--------------------
class mylist:
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def __repr__(self):
return "mylist(%s)" % self.data
def __add__(self,rhs):
return mylist(self.data + rhs.data)
def __idd__(self,rhs):
self.data.extend(rhs.data)
return self
L1 = mylist([1,2,3])
L2 = mylist([4,5,6])
L1 += L2
print(L1)
#----------------------------------------------
class mylist:
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def __repr__(self):
return "mylist(%s)" % self.data
def __add__(self,rhs):
return mylist(self.data + rhs.data)
def __idd__(self,rhs):
self.data.extend(rhs.data)
return self
s = 'ABC'
def f():
global s
s += 'DEF'
f()
print(s)
l = [1,2,3]
def f2(l2):
l2 += [4,5,6]
f2(l)
print(l)
#---------------------------------------------
class mylist:
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def __repr__(self):
return "mylist(%s)" % self.data
def __gt__(self,rhs):
# if self.data[0] > rhs.data[0]:
# return True
# return False
return self.data > rhs.data
def __eq__(self,rhs):
return self.data == self.data
l1 = mylist([1,2,3])
l2 = mylist([1,2,3])
print(l1 > l2)
print(l1 < l2)
print(l1 == l2)
print(l1 != l2)
python运算符重载
最新推荐文章于 2025-06-16 08:29:06 发布