python之類的成員(方法)

 

class Foo:
    def bar(self):
        print('bar')

obj = Foo()
obj.bar()

# obj = Foo()
# Foo.bar(obj)

方法:

普通方法:保存在類中,由對象來調用(上面代碼中兩個方法都可以,但是不管是用對象調用還是用類調用,都要首先定義一個對象,而且一般都用第一種方法調用),self參數是對象。

靜態方法:保存在類中,由類直接調用,並且不用self參數

類方法:保存在類中,由類直接調用,cls參數是當前類

class Foo:
    def bar(self):
        print('bar')

    # 加裝飾器裝飾後,變成靜態方法,self就不是必須的了
    @staticmethod
    def sta():
        print('123')

    @staticmethod
    def stat(a1, a2):
        print(a1, a2)

Foo.sta()  # 123
Foo.stat(1, 2)  # 1 2
class Foo:
    def bar(self):
        # self是對象
        print('bar')

    # 加裝飾器裝飾後,變成靜態方法,self就不是必須的了
    @staticmethod
    def sta():
        print('123')

    @staticmethod
    def stat(a1, a2):
        print(a1, a2)

    @staticmethod
    def classmd(cls):
        # cls是類名,不依賴對象
        print(cls)
        print('classmd')


Foo.classmd(Foo)
# <class '__main__.Foo'>
# classmd

應用場景:

如果對象中需要保存一些值,執行某功能時需要使用對象中的值,用普通方法。

不需要任何對象中的值時,用靜態方法。(類方法沒有太大的用處,它的功能可以通過靜態方法實現)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章