Python操作符重载总结&列表模型

本文详细介绍了Python中的操作符重载方法及其实现原理,并通过具体实例展示了列表(数组)的操作与内部模型。

 

操作符重载

二元运算符    特殊方法
+    __add__,__radd__
-    __sub__,__rsub__
*    __mul__,__rmul__
/    __div__,__rdiv__,__truediv__,__rtruediv__
//    __floordiv__,__rfloordiv__
%    __mod__,__rmod__
**    __pow__,__rpow__
<<    __lshift__,__rlshift__
>>    __rshift__,__rrshift__
&    __and__,__rand__
^    __xor__,__rxor__
|    __or__,__ror__
+=    __iaddr__
-=    __isub__
*=    __imul__
/=    __idiv__,__itruediv__
//=    __ifloordiv__
%=    __imod__
**=    __ipow__
<<=    __ilshift__
>>=    __irshift__
&=    __iand__
^=    __ixor__
|=    __ior__
==    __eq__
!=,<>    __ne__
>    __get__
<    __lt__
>=    __ge__
<=    __le__

 

 

Method            Overloads            Call for
__init__        构造函数            X=Class()
__del__            析构函数            对象销毁
__add__            +                    X+Y,X+=Y
__or__            |                    X|Y,X|=Y
__repr__        打印转换            print X,repr(X)
__str__            打印转换            print X,str(X)
__call__        调用函数            X()
__getattr_       限制                X.undefine
__setattr__        取值                X.any=value
__getitem__        索引                X[key],
                            
__len__            长度                len(X)
__cmp__            比较                X==Y,X<Y
__lt__            小于                X<Y
__eq__            等于                X=Y
__radd__        Right-Side +            +X
__iadd__        +=                    X+=Y
__iter__        迭代                For In 

 

 

python中的列表模型

列表或者说数组是特殊的对象,一个栈内存中的变量对应着堆内存中的两个对象。

我们可以通过列表的删除操作帮助我们理解python列表模型

li = [1,2,3,4,5,6]

# 1.使用del删除对应下标的元素
del li[2]
# li = [1,2,4,5,6]

# 2.使用.pop()删除最后一个元素
li.pop()
# li = [1,2,4,5]

# 3.删除指定值的元素
li.remove(4)
# li = [1,2,5]

# 4.使用切片来删除
li = li[:-1]
# li = [1,2]
# !!!切忌使用这个方法,如果li被作为参数传入函数,
# 那么在函数内使用这种删除方法,将不会改变原list

li = [1,2,3,4,5,6]
def delete(li, index):
li = li[:index] + li[index+1:]
delete(li, 3)
print li
# 会输出[1,2,3,4,5,6]

原因如图所示。

对于普通概念,python只需要两个部分就可以表示了。但是对于一个数组,在python语言中表示为三个部分:

 

转载于:https://www.cnblogs.com/xinchrome/p/5068996.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值