摘要:在中,有些開源項目中的方法返回結果為對于不熟悉這種用法的讀者來說,這無疑使人困擾,本文的目的就是給出這種語法的一個解釋,并且給出幾個例子。
??在Python中,有些開源項目中的方法返回結果為self. 對于不熟悉這種用法的讀者來說,這無疑使人困擾,本文的目的就是給出這種語法的一個解釋,并且給出幾個例子。
??在Python中,return self的作用為:(英語原文,筆者水平有限,暫不翻譯)
Returning self from a method simply means that your method returns a reference to the instance object on which it was called. This can sometimes be seen in use with object oriented APIs that are designed as a fluent interface that encourages method cascading.
通俗的說法是, allow chaining(這個是筆者自己的翻譯: 鏈式調用).
??例子:
class Foo(object): def __init__(self): self.myattr = 0 def bar(self): self.myattr += 1 return self f = Foo() f.bar().bar().bar() print(f.myattr)
輸出結果為4.
把bar()方法改為返回return None, 則上述代碼會出錯。
class Foo(object): def __init__(self): self.myattr = 0 def bar(self): self.myattr += 1 return None f = Foo() f.bar().bar().bar() print(f.myattr)
輸出結果如下:
AttributeError: "NoneType" object has no attribute "bar"
??那么return self返回的結果是什么呢?
class Foo(object): def __init__(self): self.myattr = 0 def bar(self): self.myattr += 1 #return None return self f = Foo() print(type(f.bar()))
輸出結果為:
可以發現,return self返回的是類的實例。
??一個真實的例子:
sklearn模塊中很多方法的返回結果為self, 比如大多數模型的fit()方法,例子如下:
from sklearn.linear_model import LogisticRegression X = [[0,0], [0,1], [1,0], [1,1]] y = [0, 1, 1, 0] clf = LogisticRegression() # fit函數返回的結果就是self, 允許鏈式調用 t = clf.fit(X,y).predict([[0,2]]) print(t)
輸出:
[0]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42076.html
摘要:以自定義字典為例僅作演示,不保證其它功能的完備性貓輸出結果上例的關鍵點在于將字典的鍵值取出,并對鍵值的列表做切片處理,其妙處在于,不用擔心索引越界和負數索引,將字典切片轉換成了字典鍵值的切片,最終實現目的。 2018-12-31 更新聲明:切片系列文章本是分三篇寫成,現已合并成一篇。合并后,修正了一些嚴重的錯誤(如自定義序列切片的部分),還對行文結構與章節銜接做了大量改動。原系列的單篇...
摘要:準確的說,是中一個用于支持單元測試的庫,它的主要功能是使用對象替代掉指定的對象,以達到模擬對象的行為。下面我們使用對象在單元測試中分別測試訪問正常和訪問不正常的情況。 Mock是什么 Mock這個詞在英語中有模擬的這個意思,因此我們可以猜測出這個庫的主要功能是模擬一些東西。準確的說,Mock是Python中一個用于支持單元測試的庫,它的主要功能是使用mock對象替代掉指定的Python...
摘要:生成器生成器是迭代器,但是只能迭代一次,生成器不會將所有值存儲在內存中,而是實時的生成這些值看上去除了用替換了原來的外,它們沒什么不同。 這是stackoverflow上一個關于python中yield用法的帖子,這里翻譯自投票最高的一個回答,原文鏈接 here 問題 Python中yield關鍵字的用途是什么?它有什么作用?例如,我試圖理解以下代碼 ¹: def _get_c...
閱讀 1949·2023-04-26 01:59
閱讀 3264·2021-10-11 11:07
閱讀 3295·2021-09-22 15:43
閱讀 3374·2021-09-02 15:21
閱讀 2549·2021-09-01 10:49
閱讀 901·2019-08-29 15:15
閱讀 3089·2019-08-29 13:59
閱讀 2829·2019-08-26 13:36