若是咱們是直接執行某個.py文件的時候,該文件中那麼」__name__ == '__main__'「是True,可是咱們若是從另一個.py文件經過import導入該文件的時候,這時__name__的值就是咱們這個py文件的名字而不是__main__。html
這個功能還有一個用處:調試代碼的時候,在」if __name__ == '__main__'「中加入一些咱們的調試代碼,咱們能夠讓外部模塊調用的時候不執行咱們的調試代碼,可是若是咱們想排查問題的時候,直接執行該模塊文件,調試代碼可以正常運行!python
x.__contains__(y) 等價於 y in x, 在list,str, dict,set等容器中有這個函數
__base__, __bases__, __mro__, 關於類繼承和函數查找路徑的。
class.__subclasses__(), 返回子類列表
x.__call__(...) == x(...)
x.__cmp__(y) == cmp(x,y)
x.__getattribute__('name') == x.name == getattr(x, 'name'), 比__getattr__更早調用
x.__hash__() == hash(x)
x.__sizeof__(), x在內存中的字節數, x爲class得話, 就應該是x.__basicsize__
x.__delattr__('name') == del x.name
__dictoffset__ attribute tells you the offset to where you find the pointer to the __dict__ object in any instance object that has one. It is in bytes.
__flags__, 返回一串數字,用來判斷該類型可否被序列化(if it's a heap type), __flags__ & 512
S.__format__, 有些類有用
x.__getitem__(y) == x[y], 相應還有__setitem__, 某些不可修改類型如set,str沒有__setitem__
x.__getslice__(i, j) == x[i:j], 有個疑問,x='123456789', x[::2],是咋實現得
__subclasscheck__(), check if a class is subclass
__instancecheck__(), check if an object is an instance
__itemsize__, These fields allow calculating the size in bytes of instances of the type. 0是可變長度, 非0則是固定長度
x.__mod__(y) == x%y, x.__rmod__(y) == y%x
x.__module__ , x所屬模塊
x.__mul__(y) == x*y, x.__rmul__(y) == y*x函數
__reduce__, __reduce_ex__ , for picklespa
__slots__ 使用以後類變成靜態同樣,沒有了__dict__, 實例也不可新添加屬性調試
__getattr__ 在通常的查找屬性查找不到以後會調用此函數orm
__setattr__ 取代通常的賦值操做,若是有此函數會調用此函數, 如想調用正常賦值途徑用 object.__setattr__(self, name, value)htm
__delattr__ 同__setattr__, 在del obj.name有意義時會調用blog
1.python:淺析python 中__name__ = '__main__' 的做用:http://www.javashuo.com/article/p-hlkjtwtv-de.html繼承
2.python中那些雙下劃線開頭得函數和變量--轉載:https://www.cnblogs.com/nkwy2012/p/6264031.html內存