python运算符重载

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值