1. 程式人生 > >python 類方法 靜態方法 例項方法

python 類方法 靜態方法 例項方法

#類方法能訪問類屬性,靜態方法不能訪問類屬性
#https://www.cnblogs.com/jayliu/p/9030725.html

class A(object):


    @classmethod  # 加上這句後 classKkk就成為了類方法,類和例項都可以訪問,但是類訪問
    def classKkk(cls, x):
        print(cls, x)

    @staticmethod  # 加上這句就成為了靜態方法,類和例項都可以訪問。
    def staticKkk(x):
        print(x)

    def mmm(x):  # 這是無敵普通函式
        print(x)

    def kkk(self, x):  # 例項方法,例項能訪問
        print(self, x)


A.classKkk(2)#   <class '__main__.A'> 2 這裡類A可以直接訪問類方法classKkk,但是不能訪問例項方法kkk(會報錯的)。
# A.staticKkk(3)  # 3 這裡類A也可以訪問靜態方法staticKkk,
# A.kkk(A, 1)  # <class '__main__.A'> 1 類要訪問例項方法需要加入引數,至於這個引數可以是A也可以是A()
# A.mmm(3)  # 3 物件可以訪問無敵普通函式
# a = A()

# a.classKkk(6)  # <class '__main__.A'> 6 例項訪問類方法,沒毛病
# a.staticKkk(7)  # 7
# a.kkk(5)  # <__main__.A object at 0x0000028A64394CC0> 5 例項訪問例項方法,沒毛病
# a.mmm(7)  # 報錯,例項不能訪問普通函式