国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python中return self的用法

acrazing / 2364人閱讀

摘要:在中,有些開源項(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

相關(guān)文章

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

    摘要:以自定義字典為例僅作演示,不保證其它功能的完備性貓輸出結(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)。原系列的單篇...

    yangrd 評(píng)論0 收藏0
  • Python Mock入門

    摘要:準(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...

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

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

    Loong_T 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<