摘要:在中,有些開源項(xiàng)目中的方法返回結(jié)果為對(duì)于不熟悉這種用法的讀者來說,這無疑使人困擾,本文的目的就是給出這種語法的一個(gè)解釋,并且給出幾個(gè)例子。
??在Python中,有些開源項(xiàng)目中的方法返回結(jié)果為self. 對(duì)于不熟悉這種用法的讀者來說,這無疑使人困擾,本文的目的就是給出這種語法的一個(gè)解釋,并且給出幾個(gè)例子。
??在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(這個(gè)是筆者自己的翻譯: 鏈?zhǔn)秸{(diào)用).
??例子:
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)
輸出結(jié)果為4.
把bar()方法改為返回return None, 則上述代碼會(huì)出錯(cuò)。
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)
輸出結(jié)果如下:
AttributeError: "NoneType" object has no attribute "bar"
??那么return self返回的結(jié)果是什么呢?
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()))
輸出結(jié)果為:
可以發(fā)現(xiàn),return self返回的是類的實(shí)例。
??一個(gè)真實(shí)的例子:
sklearn模塊中很多方法的返回結(jié)果為self, 比如大多數(shù)模型的fit()方法,例子如下:
from sklearn.linear_model import LogisticRegression X = [[0,0], [0,1], [1,0], [1,1]] y = [0, 1, 1, 0] clf = LogisticRegression() # fit函數(shù)返回的結(jié)果就是self, 允許鏈?zhǔn)秸{(diào)用 t = clf.fit(X,y).predict([[0,2]]) print(t)
輸出:
[0]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/42076.html
摘要:以自定義字典為例僅作演示,不保證其它功能的完備性貓輸出結(jié)果上例的關(guān)鍵點(diǎn)在于將字典的鍵值取出,并對(duì)鍵值的列表做切片處理,其妙處在于,不用擔(dān)心索引越界和負(fù)數(shù)索引,將字典切片轉(zhuǎn)換成了字典鍵值的切片,最終實(shí)現(xiàn)目的。 2018-12-31 更新聲明:切片系列文章本是分三篇寫成,現(xiàn)已合并成一篇。合并后,修正了一些嚴(yán)重的錯(cuò)誤(如自定義序列切片的部分),還對(duì)行文結(jié)構(gòu)與章節(jié)銜接做了大量改動(dòng)。原系列的單篇...
摘要:準(zhǔn)確的說,是中一個(gè)用于支持單元測(cè)試的庫,它的主要功能是使用對(duì)象替代掉指定的對(duì)象,以達(dá)到模擬對(duì)象的行為。下面我們使用對(duì)象在單元測(cè)試中分別測(cè)試訪問正常和訪問不正常的情況。 Mock是什么 Mock這個(gè)詞在英語中有模擬的這個(gè)意思,因此我們可以猜測(cè)出這個(gè)庫的主要功能是模擬一些東西。準(zhǔn)確的說,Mock是Python中一個(gè)用于支持單元測(cè)試的庫,它的主要功能是使用mock對(duì)象替代掉指定的Python...
摘要:生成器生成器是迭代器,但是只能迭代一次,生成器不會(huì)將所有值存儲(chǔ)在內(nèi)存中,而是實(shí)時(shí)的生成這些值看上去除了用替換了原來的外,它們沒什么不同。 這是stackoverflow上一個(gè)關(guān)于python中yield用法的帖子,這里翻譯自投票最高的一個(gè)回答,原文鏈接 here 問題 Python中yield關(guān)鍵字的用途是什么?它有什么作用?例如,我試圖理解以下代碼 ¹: def _get_c...
閱讀 1967·2023-04-26 01:59
閱讀 3274·2021-10-11 11:07
閱讀 3305·2021-09-22 15:43
閱讀 3385·2021-09-02 15:21
閱讀 2563·2021-09-01 10:49
閱讀 910·2019-08-29 15:15
閱讀 3095·2019-08-29 13:59
閱讀 2837·2019-08-26 13:36