講師回答 / 廖雪峰
如果你定義了一個函數:bar(self, a, b, c)你可以直接調用,注意self參數也要傳:bar(obj, 1, 2, 3)如果你把bar函數綁定到對象,你可以在對象上調用:foo.bar(1, 2, 3)注意self參數不能傳也不讓你傳,由解釋器自動傳入foo對象可以直接在class中定義方法,這樣每個實例自動綁定了該方法也可以在運行期給實例綁定方法,兩種方式都是等價的,因為python解釋器只不過把class的定義翻譯成“給實例綁定方法”的代碼
2015-03-08
最贊回答 / Perona
python中,函數(方法)并不是依附與類才能存在。函數并不只是在類中定義。這種直接在模塊中而不是類中定義的函數(方法),叫做函數。而?方法(method),是依附于類?的,他們定義在類中,是屬于類的,但是他們本質上,還是一個函數。方法的第一個參數不一定必須是self。這么說吧,凡是def foo()這種,都是函數,在類中定義的函數,就是方法??偨Y:方法:類內普通方法,類方法函數:普通函數,類內的靜態方法
2015-03-08
最新回答 / 慕客2057
我認為,可以參考:>>> import functools>>> int2 = functools.partial(int, base=2) ? ? ? # base是一個函數,其參數取2,即把輸入的內容轉化成2進制>>> int2('1000000')64這里也一樣,cmp是一個函數,其函數里面又包含了一個參數函數,為隱函數lambda,后面部分為參數函數lambda的內容
2015-03-06
講師回答 / 廖雪峰
因為函數調用允許傳入關鍵字參數:>>> def fn(*args):... ? ? pass...?>>> fn(1, 2, 3) # OK>>> fn(1, 2, 3, last=4)Traceback (most recent call last):? File "<stdin>", line 1, in <module>TypeError: fn() got an unexpected keyword argument '...
2015-03-06