成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python中return self的用法

acrazing / 2366人閱讀

摘要:在中,有些開源項目中的方法返回結(jié)果為對于不熟悉這種用法的讀者來說,這無疑使人困擾,本文的目的就是給出這種語法的一個解釋,并且給出幾個例子。

??在Python中,有些開源項目中的方法返回結(jié)果為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(這個是筆者自己的翻譯: 鏈?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, 則上述代碼會出錯。

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返回的是類的實例。

??一個真實的例子:

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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42076.html

相關(guān)文章

  • Python進階:自定義對象實現(xiàn)切片功能

    摘要:以自定義字典為例僅作演示,不保證其它功能的完備性貓輸出結(jié)果上例的關(guān)鍵點在于將字典的鍵值取出,并對鍵值的列表做切片處理,其妙處在于,不用擔(dān)心索引越界和負(fù)數(shù)索引,將字典切片轉(zhuǎn)換成了字典鍵值的切片,最終實現(xiàn)目的。 2018-12-31 更新聲明:切片系列文章本是分三篇寫成,現(xiàn)已合并成一篇。合并后,修正了一些嚴(yán)重的錯誤(如自定義序列切片的部分),還對行文結(jié)構(gòu)與章節(jié)銜接做了大量改動。原系列的單篇...

    yangrd 評論0 收藏0
  • Python Mock入門

    摘要:準(zhǔn)確的說,是中一個用于支持單元測試的庫,它的主要功能是使用對象替代掉指定的對象,以達(dá)到模擬對象的行為。下面我們使用對象在單元測試中分別測試訪問正常和訪問不正常的情況。 Mock是什么 Mock這個詞在英語中有模擬的這個意思,因此我們可以猜測出這個庫的主要功能是模擬一些東西。準(zhǔn)確的說,Mock是Python中一個用于支持單元測試的庫,它的主要功能是使用mock對象替代掉指定的Python...

    Winer 評論0 收藏0
  • Python yield用法淺析(stackoverflow)

    摘要:生成器生成器是迭代器,但是只能迭代一次,生成器不會將所有值存儲在內(nèi)存中,而是實時的生成這些值看上去除了用替換了原來的外,它們沒什么不同。 這是stackoverflow上一個關(guān)于python中yield用法的帖子,這里翻譯自投票最高的一個回答,原文鏈接 here 問題 Python中yield關(guān)鍵字的用途是什么?它有什么作用?例如,我試圖理解以下代碼 ¹: def _get_c...

    Loong_T 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<