靜態方法和類成員方法

靜態方法和類成員方法分別正在建立時分別裝入 staticmethod 類型和 classmethod 類型的對象
使用裝飾器(decorator)語法
'''
#老方法
__metaclass__ = type

class MyClass:

    def smeth():                      #靜態方法定義沒有self參數,且可以被類自己直接調用
        print 'This is a static method'
    smeth = staticmethod(smeth)       #靜態方法在建立時裝入 staticmethod 類型

    def cmeth(cls):                   #類方法在定義時,須要名爲 cls 的相似於 self 的參數,能夠用類的對象調用
        print 'This is a class method'
    cemth = classmethod(cmeth)        #類成員方法在建立時換入 classmethod 類型

'''

#裝飾器
#它能對任何可調用的對象進行包裝,既可以用於方法也可以用於函數
#使 @ 操做符,在方法(或函數)的上方將裝飾器列出,從而指定一個或者更多的裝飾器(多個裝飾器在應用時的順序與指定順序相反)

__metaclass__= type

class MyClass:

    @staticmethod  #定義靜態方法
    def smeth():
        print 'This is a static method'

    @classmethod   #定義類方法
    def cmethd(cls):
        print 'This is a class method',cls

    def instancefun(self):   #實例方法
        print '實例方法'

    def function():          #普通方法
        print '普通方法'


mc =  MyClass()

MyClass.smeth()              #類和對象均可以調用靜態方法
mc.smeth()
MyClass.cmethd()             #類方法也能夠直接被類調用
MyClass().cmethd()           #類方法被對象調用
mc.instancefun()             #對象調用實例方法
mc.cmethd()                  #對象調用類方法

#MyClass.instancefun()       #類調用實例方法,報錯
#mc.function()               #對象調用普通方法,報錯
相關文章
相關標籤/搜索