您的“關注”和“點贊”,是信任,是認可,是支持,是動力…
如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。
文章目錄
1 Python 類中的方法分類概述
- 實例方法:在類中定義的方法通常默認都是實例方法,包括構造方法。
- 類方法:至少要有一個形式參數,通常命名爲
cls
,Python 會自動將類本身(注意:不是類對象)綁定給 cls 參數,無需顯式爲 cls 傳參;並且類方法需要用@classmethod
修飾符進行修飾。 - 靜態方法:靜態方法需要使用
@staticmethod
修飾符進行修飾。
2 Python 實例方法
2.1 實例方法概述
在類中定義的方法通常默認都是實例方法,包括構造方法。
實例方法最大的特點就是,它最少也要包含一個 self 參數,並且作爲第一個參數,用於綁定(Python 會自動完成綁定)調用此方法的實例對象(調用者)。
舉例如下所示:
# 定義類
class Demo:
# 構造方法也是實例方法
def __init__(self):
print('構造方法被執行了。')
# 定義 info() 實例方法
def info(self):
print('info() 實例方法被執行了。')
2.2 實例方法的調用方式
(1)“綁定”方式
用類的實例對象調用類成員的方式稱爲“綁定方式”。
實例方法通常會用類對象直接調用。
舉例如下所示:
# 定義類
class Demo:
# 構造方法也是實例方法
def __init__(self):
print('構造方法被執行了。')
# 定義 info() 實例方法
def info(self):
print('info() 實例方法被執行了。')
demo = Demo() # 創建 Demo 類的實例對象
demo.info() # 用 Demo 類的實例對象調用實例方法 info()
運行結果:
構造方法被執行了。
info() 實例方法被執行了。
(2)“非綁定”方式
Python 中允許使用類名直接調用實例方法,但必須手動爲該實例方法的第一個 self 參數傳遞參數,這種調用方法的方式被稱爲“非綁定方式”。
舉例如下所示:
# 定義類
class Demo:
# 構造方法也是實例方法
def __init__(self):
print('構造方法被執行了。')
# 定義 info() 實例方法
def info(self):
print('info() 實例方法被執行了。')
demo = Demo() # 創建 Demo 類的實例對象
Demo.info(demo) # 使用類名 Demo 直接調用實例方法 info(),並手動爲實例方法 info() 傳入實例對象(demo)
運行結果:
構造方法被執行了。
info() 實例方法被執行了。
3 Python 類方法
3.1 類方法概述
Python 類方法,至少要有一個形式參數,通常命名爲 cls
,Python 會自動將類本身(注意:不是類對象)綁定給 cls 參數,無需顯式爲 cls 傳參;並且類方法需要用 @classmethod
修飾符進行修飾。
舉例如下所示:
# 定義類
class Demo:
# 構造方法也是實例方法
def __init__(self):
print('構造方法被執行了。')
# 定義 info() 類方法
@classmethod
def info(cls):
print('info() 類方法被執行了。')
3.2 類方法的調用
- 建議:使用類名直接調用,因爲Python 會自動將類本身(注意:不是類對象)綁定給 cls 參數,無需顯式爲 cls 傳參。
- 不建議:使用實例對象來調用。
舉例如下所示:
# 定義類
class Demo:
# 構造方法也是實例方法
def __init__(self):
print('構造方法被執行了。')
# 定義 info() 類方法
@classmethod
def info(cls):
print('info() 類方法被執行了。')
Demo.info() # 類名直接調用類方法
運行結果:
info() 類方法被執行了。
4 Python 靜態方法
4.1 靜態方法概述
靜態方法需要使用 @staticmethod
修飾符進行修飾。
在類的靜態方法中無法調用任何類屬性和類方法,因爲靜態方法沒有類似 self、cls 這樣的特殊參數,因此 Python 解釋器不會對它包含的參數做任何類或對象的綁定。
舉例如下所示:
# 定義類
class Demo:
# 構造方法也是實例方法
def __init__(self):
print('構造方法被執行了。')
# 定義 info() 靜態方法
@staticmethod
def info():
print('info() 靜態方法被執行了。')
4.2 靜態方法的調用
靜態方法的調用,既可以使用類名直接調用,也可以使用類對象調用。
舉例如下所示:
# 定義類
class Demo:
# 構造方法也是實例方法
def __init__(self):
print('構造方法被執行了。')
# 定義 info() 靜態方法
@staticmethod
def info():
print('info() 靜態方法被執行了。')
Demo.info() # 類名直接調用靜態方法
# 使用實例對象調用靜態方法
demo = Demo() # 創建實例對象
demo.info()
運行結果:
info() 靜態方法被執行了。
構造方法被執行了。
info() 靜態方法被執行了。