| 類的特殊成員方法 |
1.__doc__ :打印類的描述信息
class Foo: """ 描述類信息,這是用於看片的神奇 """<span style="color: #0000ff">def</span><span style="color: #000000"> func(self): </span><span style="color: #0000ff">pass</span>print Foo.doc
#輸出:類的描述信息
2.__module__:表示當前操作的對象在那個模塊
class C:</span><span style="color: #0000ff">def</span> <span style="color: #800080">__init__</span><span style="color: #000000">(self): self.name </span>= <span style="color: #800000">'</span><span style="color: #800000">wupeiqi</span><span style="color: #800000">'</span></pre>
3.__class__:表示當前操作的對象的類是什么
from lib.aa import Cobj = C()
print obj.module # 輸出 lib.aa,即:輸出模塊
print obj.class # 輸出 lib.aa.C,即:輸出類
4. __init__ :構造方法,通過類創建對象時,自動觸發執行
class Role(object): #初始化函數,在生成一個角色時要 初始化的一些屬性就填寫在這里 def __init__(self,name,role,weapon,life_value=100,money=15000):#__init__中的第一個參數self,和這里的self都 是什么意思? 看下面解釋
self.name = name
self.role = role
5.__del__:析構方法,當對象在內存中被釋放時,自動觸發執行
class Role(object): def __init__(self,name,role,weapon: self.name = name self.role = role self.weapon = weapon</span><span style="color: #0000ff">def</span> <span style="color: #800080">__del__</span>(self): <span style="color: #008000">#</span><span style="color: #008000">析構函數</span> <span style="color: #0000ff">print</span>(<span style="color: #800000">"</span><span style="color: #800000">del.....run...</span><span style="color: #800000">"</span><span style="color: #000000">)r1 = Role('Alex','police','AK47') #生成一個角色
6.__call__:對象后面加括號,觸發執行
#注:構造方法的執行是由創建對象觸發的,即:對象 = 類名() ;而對於 __call__ 方法的執行是由對象后加括號觸發的,即:對象() 或者 類()() class Foo:</span><span style="color: #0000ff">def</span> <span style="color: #800080">__init__</span><span style="color: #000000">(self): </span><span style="color: #0000ff">pass</span> <span style="color: #0000ff">def</span> <span style="color: #800080">__call__</span>(self, *args, **<span style="color: #000000">kwargs): </span><span style="color: #0000ff">print</span> <span style="color: #800000">'</span><span style="color: #800000">__call__</span><span style="color: #800000">'</span><span style="color: #000000">obj = Foo() # 執行 init
obj() # 執行 call
7.__dict__:查看類或對象中的所有成員
print(類.__dict__) # 打印類里所有屬性,不包括實例屬性 print(實例.__dict__) #打印實例所有屬性,不包括類屬性
8.__str__:如果一個類中定義了__str__方法,那么在打印 對象 時,默認輸出該方法的返回值
class Foo:</span><span style="color: #0000ff">def</span> <span style="color: #800080">__str__</span><span style="color: #000000">(self): </span><span style="color: #0000ff">return</span> <span style="color: #800000">'</span><span style="color: #800000">alex li</span><span style="color: #800000">'</span><span style="color: #000000">obj = Foo()
print obj
# 輸出:alex li
9.__getitem__、__setitem__、__delitem__:
注:用於索引操作,如字典。以上分別表示獲取、設置、刪除數據
class Foo(object):</span><span style="color: #0000ff">def</span> <span style="color: #800080">__getitem__</span><span style="color: #000000">(self, key): </span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__getitem__</span><span style="color: #800000">'</span><span style="color: #000000">,key) </span><span style="color: #0000ff">def</span> <span style="color: #800080">__setitem__</span><span style="color: #000000">(self, key, value): </span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__setitem__</span><span style="color: #800000">'</span><span style="color: #000000">,key,value) </span><span style="color: #0000ff">def</span> <span style="color: #800080">__delitem__</span><span style="color: #000000">(self, key): </span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__delitem__</span><span style="color: #800000">'</span><span style="color: #000000">,key)obj = Foo()
result = obj['k1'] # 自動觸發執行 getitem
obj['k2'] = 'alex' # 自動觸發執行 setitem
del obj['k1']
10.__new__\__metaclass__ *(自定義類)
__new__:是用來創建實例的,對類實例化之前進行定制,可以用到。
__metaclass__:定義一個類如何被創建
類的生成 調用 順序依次是 __new__ --> __init__ --> __call__
#創建類特殊方式 def func(self): print(self.name,self.age)def init(self,name,age):
self.name = name
self.age = age#通過Type實例化產生的Foo類,Foo是Type的對象。
(object,)加入“,”是為了讓括號知道他是個元組。
type第一個參數:類名
type第二個參數:當前類的基類
type第三個參數:類的成員
Foo = type('Foo',(object,),{'talk':func,
'init':init})f= Foo("Chrn",22)
f.talk()
print(type(Foo))
#Type 為 類的類,所有類都是Type創建的

metaclass 詳解文章:http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python 得票最高那個答案寫的非常好。

