python | 實例函數、靜態函數和類函數

實例方法

在類中定義的方法,一般都是實例方法,第一個參數必須是實例對象,該參數名一般約定爲“self”,通過它來傳遞實例的屬性和方法(也可以傳類的屬性和方法),只能由實例對象調用。

類方法

定義前需要使用@classmethod裝飾器進行裝飾。第一個參數必須是當前類對象,該參數名一般約定爲“cls”,通過它來傳遞類的屬性和方法(不能傳實例的屬性和方法),調用此方法時,會同時創建一個實例,注意:此方法調用時,類的構造函數必須要有默認值,類對象或實例對象都可以調用。

靜態方法

定義前需要使用@staticmethod裝飾器進行裝飾。參數隨意,沒有“self”和“cls”參數,但是方法體中不能使用類或實例的任何屬性和方法,調用此方法時,不需要進行實例化,類對象或實例對象都可以調用。

實例:

# coding=utf-8


class Chinese(object):
    nationality = '中國'
    
    def __init__(self, name='Super於', age=25):
        self.name = name
        self.age = age


    # 實例方法
    def print_info(self):
        print('國籍:', Chinese.nationality)
        print('姓名:', self.name)
        print('年齡:', self.age)


    # 類方法
    @classmethod
    def get_nationality(cls):
        print('類方法生成了實例對象:', cls)
        # print('姓名:', self.name)  # 會報錯 name 'self' is not defined
        return cls.nationality


    # 靜態方法
    @staticmethod
    def print_interest(interest):
        print('我的愛好是', interest)
    
if __name__ == "__main__":    
    # 調用實例方法,首先對類進行實例化
    superyujx = Chinese()
    superyujx.print_info()
    
    # 調用類方法,同時會創建一個實例
    print(Chinese.get_nationality())


    # 調用靜態方法
    Chinese.print_interest('編程')

結果:

國籍:中國
姓名:Super於
年齡:25
類方法生成了實例對象:<class '__main__.Chinese'>
中國
我的愛好是 編程

我是「Super於」,立志做一個每天都有正反饋的人!

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