16.語法對照-面向物件(python-java)
python每個類都有相同的內建屬性/方法;
1.內建屬性
__class__:獲取例項所在的類;
__bases__:獲取類的所有父類構成元素;
__dict__:
類:包含共享的變數和函式(類屬性,方法等);
例項:包含例項屬性;
__doc__:類文件,help(類或例項)時呼叫;
__name__:類名;
__module__:模組名;
__mro__:方法解析順序;
2.內建方法
2.1生命週期
__new__(cls):負責建立類例項的類方法;
__init__(self):建立物件之後馬上呼叫初始化方法 ;
__del__:析構方法,執行清理動作,不建議操作;(2)
2.2類的表示
__str__:列印時呼叫,如果沒有實現,使用repr;(1)
__repr__:使用類例項或者 print(repr(類例項))呼叫;(1)
__format__(self):類的例項用於字串格式化;
__hash__(self):呼叫hash()時使用(__eq__結合);(3)
__nonzero__(self):呼叫bool()時使用;
__dir__(self):呼叫dir()時使用;
2.3.訪問控制
__getattr__(self, name):訪問不存在的屬性時呼叫;
__delattr__(self, name):刪除name屬性;
__setattr__(self, name, value):設定name屬性;
__getattribute__:屬性訪問攔截器;
2.4.容器相關
__len__(self):返回容器的長度;
__getitem__(self, key):使用self[key]時呼叫;
__setitem__(self, key):使用self[key]賦值時的呼叫;
__iter__(self, key):返回當前容器的一個迭代器;
__reversed__(self):返回一個反轉的序列;
__contains__(self, item):使用in和not in時呼叫;
__missing__(self ,key):訪問字典不存在的鍵時呼叫;
2.5.類關係
__instancecheck__(self, instance):檢查例項;
__subclasscheck__(self, subclass):檢查子類;
2.6.上下文管理器(5)
__enter__:返回值繫結到指定的as語句;
__exit__:退出時的清理程式碼;
2.7.描述符協議
__set__(self, obj, type=None):設定屬性;
__get__(self. obj):獲取屬性;
__delete__(self. obj):對屬性呼叫del時呼叫
2.8.比較
__cmp__(self, other):比較操作符的行為;(7)
__gt__(self,other):大於;
__lt__(slef,other):小於;
__ge__(slef,other):大於或者等於;
__le__(slef,other):小於或者等於;
__eq__(slef,other):等於;(3)
__ne__(self, other):不等於;
2.9.呼叫
__call__(self, *args):把例項物件作為函式呼叫;
2.10.拷貝
__copy__(self):淺拷貝;(4)
__deepcopy__(self, memodict=):深拷貝;(4)
2.11.Pickling(序列化) (8)
__getnewargs__(self):反序列化時傳遞__new__引數;
__getstate__(self):在序列化儲存狀態;
__setstate__(self):在反序列化時傳遞狀態;
__reduce__(self):序列化擴充套件型別(C語言API);
__reduce_ex__(self):__reduce__的相容模式;
2.12.迭代器協議(6)
__next__:返回下一個元素;
__iter__:返回迭代器本身;
2.13.操作符
A. 一元操作符
__pos__(self):取正;
__neg__(self):取負;
__abs__(self):絕對值;
__invert__(self):取反;
__round__(self, n):四捨五入;
__floor__(self):向下取整;
__ceil__(self):向上取整;
__trunc__(self):取距離零最近的整數;
B.算術操作符
__add__(self, other):加法;
__sub__(self, other):減法;
__mul__(self, other):乘法;
__floordiv__(self, other)://操作符的整數除法;
__div__(self, other):/操作符的除法;
__truediv__(self, other):_true_除法;
__mod__(self, other):取餘;
__divmod__(self, other):divmod;
__pow__:**;
__lshift__(self, other):左移位運算子<<;
__rshift__(self, other):右移位運算子>> ;
__and__(self, other):按位與運算子&;
__or__(self, other):按位或運算子|;
__xor__(self, other):按位異或運算子^;
C.反射算術運算子
D.增強賦值運算子
E.型別轉換操作符