python中類.函數(shù)名(self) 和 self.函數(shù)名()的調(diào)用方式
1. 基本等價性
class MyClass:
def method(self, x):
return x * 2
obj = MyClass()
# 這兩種調(diào)用方式是等價的
result1 = obj.method(5) # self.method(5)
result2 = MyClass.method(obj, 5) # 類.方法(self, 5)
print(result1, result2) # 輸出: 10 10
2. 重要區(qū)別
2.1 繼承和多態(tài)
class Parent:
def method(self):
print("Parent method")
class Child(Parent):
def method(self):
print("Child method")
obj = Child()
# 這兩種方式的行為不同
obj.method() # 輸出: "Child method" (動態(tài)綁定)
Parent.method(obj) # 輸出: "Parent method" (靜態(tài)調(diào)用)
2.2 描述符協(xié)議
如果方法被包裝成屬性或有其他描述符行為,兩種方式可能不同:
class MyClass:
@property
def method(self):
return "property method"
def real_method(self):
return "real method"
obj = MyClass()
print(obj.method) # 輸出: "property method" (作為屬性訪問)
print(MyClass.method) # 輸出: <property object> (訪問屬性對象)
3. 使用場景
推薦使用 self.方法名()
1、大多數(shù)情況下
2、支持多態(tài)和繼承
3、代碼更清晰
使用 類.方法名(self) 的情況
1、需要顯式調(diào)用父類方法時
2、需要繞過方法重寫時
3、在某些元編程場景中
class Parent:
def method(self):
print("Parent")
class Child(Parent):
def method(self):
# 先調(diào)用父類方法
Parent.method(self) # 顯式指定類
print("Child")
4. 總結
| 特性 | self.方法名() | 類.方法名(self) |
|---|---|---|
| 多態(tài)支持 | ? 是 | ? 否 |
| 繼承行為 | 動態(tài)綁定 | 靜態(tài)綁定 |
| 代碼清晰度 | 高 | 低 |
| 使用頻率 | 常用 | 特殊情況 |
到此這篇關于python中類.函數(shù)名(self) 和 self.函數(shù)名()的調(diào)用方式的文章就介紹到這了,更多相關python 類.函數(shù)名(self) 和 self.函數(shù)名()調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python使用Opencv實現(xiàn)邊緣檢測以及輪廓檢測的實現(xiàn)
這篇文章主要介紹了Python使用Opencv實現(xiàn)邊緣檢測以及輪廓檢測的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
python實現(xiàn)學生管理系統(tǒng)開發(fā)
這篇文章主要為大家詳細介紹了python實現(xiàn)學生管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-07-07
下載與當前Chrome對應的chromedriver.exe(用于python+selenium)
這篇文章主要介紹了下載與當前Chrome對應的chromedriver.exe(用于python+selenium),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01
Python基于ssh遠程連接Mysql數(shù)據(jù)庫操作
這篇文章主要為大家介紹了Python基于ssh遠程連接Mysql數(shù)據(jù)庫操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Python編寫車票訂購系統(tǒng)?Python實現(xiàn)快遞收費系統(tǒng)
這篇文章主要為大家詳細介紹了Python編寫車票訂購系統(tǒng),Python實現(xiàn)快遞收費系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08
django框架基于queryset和雙下劃線的跨表查詢操作詳解
這篇文章主要介紹了django框架基于queryset和雙下劃線的跨表查詢操作,結合實例形式詳細分析了Django框架queryset和雙下劃線的跨表查詢相關實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2019-12-12

