實例方法
在類中定義的方法,一般都是實例方法,第一個參數必須是實例對象,該參數名一般約定爲“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於」,立志做一個每天都有正反饋的人!