1. 程式人生 > >Python 類的特殊成員方法

Python 類的特殊成員方法

img 解釋 字典 基類 技術 pos call () log

類的特殊成員方法

1.__doc__ :打印類的描述信息

技術分享圖片
class Foo:    """ 描述類信息,這是用於看片的神奇 """     def func(self):        pass print Foo.__doc__#輸出:類的描述信息
技術分享圖片

2.__module__:表示當前操作的對象在那個模塊

class C:    def __init__(self):        self.name = wupeiqi

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    def __del__(self):             #析構函數        print("del.....run...")r1 = Role(Alex,police,AK47)    #生成一個角色
技術分享圖片

6.__call__:

對象後面加括號,觸發執行

技術分享圖片
#註:構造方法的執行是由創建對象觸發的,即:對象 = 類名() ;而對於 __call__ 方法的執行是由對象後加括號觸發的,即:對象() 或者 類()()class Foo:     def __init__(self):        pass         def __call__(self, *args, **kwargs):         print __call__ obj = Foo() # 執行 __init__obj()       # 執行 __call__
技術分享圖片

7.__dict__:查看類或對象中的所有成員

print(類.__dict__) # 打印類裏所有屬性,不包括實例屬性print(實例.__dict__) #打印實例所有屬性,不包括類屬性

8.__str__:如果一個類中定義了__str__方法,那麽在打印 對象 時,默認輸出該方法的返回值

技術分享圖片
class Foo:     def __str__(self):        return alex li obj = Foo()print obj# 輸出:alex li
技術分享圖片

9.__getitem____setitem____delitem__:

註:用於索引操作,如字典。以上分別表示獲取、設置、刪除數據

技術分享圖片
class Foo(object):     def __getitem__(self, key):        print(__getitem__,key)     def __setitem__(self, key, value):        print(__setitem__,key,value)     def __delitem__(self, key):        print(__delitem__,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 得票最高那個答案寫的非常好。

Python 類的特殊成員方法