面向物件-物件方法/靜態方法/類方法
阿新 • • 發佈:2022-03-18
物件方法/靜態方法/類方法
1、物件方法
-
定義
定義在類中
-
呼叫方式
通過物件進行呼叫
-
呼叫格式
物件.方法名([引數])
-
特性
在物件內部以引用的方式 使用類的屬性和方法
-
self
self為當前呼叫它的那個物件 也就是說 誰呼叫的它 則self就是誰
2、靜態方法
-
定義
定義在類中
-
格式
@staticmethod
-
呼叫方式
使用類名/物件進行呼叫
-
呼叫格式
類名/物件.方法名([引數列表])
-
特性
無論使用類、還是物件去呼叫 都無法獲取內部的屬性和方法 完全獨立的一個方法
-
例項
class Test: def say(self): print('普通的物件方法') @staticmethod def speak(*args, **kwargs): print(args, kwargs) print('靜態方法@staticmethod') t = Test() # t.speak() Test.speak(1,2,3, name='lucky')
3、類方法
-
定義
定義在類中
-
定義格式
@classmethod
-
呼叫方式
類名/物件.方法名(建議使用類)
-
呼叫格式
類名.方法名([引數列表])
-
特性
在類方法內部可以引用類的屬性和方法
-
注意
定義函式的第一個引數 必須為cls 其餘引數按順序擺放即可 呼叫類方法的時候 忽略第一個引數cls
-
cls
代表當前類名
-
例項
class Test: name = 'lucky' @classmethod def test(cls): print(cls) return cls() t = Test() # Test.test() # t.test() # print(Test) print(Test.test().name)
4、動態新增類方法
-
概述
新增類方法 就是將這個方法新增給類 因此 新增類方法的時候使用的是類, 而不是物件
-
將方法直接賦值給類
-
例項
class Test: pass @classmethod def run(cls): print('大偉 is running...') Test.run = run Test.run()
5、動態新增靜態方法
-
概述
新增靜態方法 就是將這個方法新增給類 所以直接給類去新增的
使用@staticmethod
-
例項
class Test: pass @staticmethod def test(): print('靜態方法') Test.test = test Test.test()