課程
/后端開發
/Python
/python進階
如何區分函數和方法
2015-03-08
源自:python進階
正在回答
如果你定義了一個函數:bar(self, a, b, c)
你可以直接調用,注意self參數也要傳:
bar(obj, 1, 2, 3)
如果你把bar函數綁定到對象,你可以在對象上調用:
foo.bar(1, 2, 3)
注意self參數不能傳也不讓你傳,由解釋器自動傳入foo對象
可以直接在class中定義方法,這樣每個實例自動綁定了該方法
也可以在運行期給實例綁定方法,兩種方式都是等價的,因為python解釋器只不過把class的定義翻譯成“給實例綁定方法”的代碼
python中,函數(方法)并不是依附與類才能存在。函數并不只是在類中定義。這種直接在模塊中而不是類中定義的函數(方法),叫做函數。
而?方法(method),是依附于類?的,他們定義在類中,是屬于類的,但是他們本質上,還是一個函數。方法的第一個參數不一定必須是self。
這么說吧,凡是def foo()這種,都是函數,在類中定義的函數,就是方法。
總結:
方法:類內普通方法,類方法
函數:普通函數,類內的靜態方法
我的理解,函數就是方法。
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-03-12
如果你定義了一個函數:bar(self, a, b, c)
你可以直接調用,注意self參數也要傳:
bar(obj, 1, 2, 3)
如果你把bar函數綁定到對象,你可以在對象上調用:
foo.bar(1, 2, 3)
注意self參數不能傳也不讓你傳,由解釋器自動傳入foo對象
可以直接在class中定義方法,這樣每個實例自動綁定了該方法
也可以在運行期給實例綁定方法,兩種方式都是等價的,因為python解釋器只不過把class的定義翻譯成“給實例綁定方法”的代碼
2015-03-09
python中,函數(方法)并不是依附與類才能存在。函數并不只是在類中定義。這種直接在模塊中而不是類中定義的函數(方法),叫做函數。
而?方法(method),是依附于類?的,他們定義在類中,是屬于類的,但是他們本質上,還是一個函數。方法的第一個參數不一定必須是self。
這么說吧,凡是def foo()這種,都是函數,在類中定義的函數,就是方法。
總結:
方法:類內普通方法,類方法
函數:普通函數,類內的靜態方法
2015-03-08
我的理解,函數就是方法。