欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中return self的用法詳解

 更新時間:2018年07月27日 17:07:42   作者:jclian91  
這篇文章主要介紹了Python中return self的用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下

在Python中,有些開源項(xiàng)目中的方法返回結(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é)果為:

<class '__main__.Foo'>

可以發(fā)現(xiàn),return self返回的是類的實(shí)例。

一個真實(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]

總結(jié)

以上所述是小編給大家介紹的Python中return self的用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Python獲取操作系統(tǒng)的三種方法

    Python獲取操作系統(tǒng)的三種方法

    在Python中,?如何獲取操作系統(tǒng)的類型、名稱、版本等信息,本文就來介紹三種獲取方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • PyTorch中Tensor的數(shù)據(jù)統(tǒng)計(jì)示例

    PyTorch中Tensor的數(shù)據(jù)統(tǒng)計(jì)示例

    今天小編就為大家分享一篇PyTorch中Tensor的數(shù)據(jù)統(tǒng)計(jì)示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 基于Python實(shí)現(xiàn)二維圖像雙線性插值

    基于Python實(shí)現(xiàn)二維圖像雙線性插值

    雙線性插值,又稱為雙線性內(nèi)插。在數(shù)學(xué)上,雙線性插值是有兩個變量的插值函數(shù)的線性插值擴(kuò)展,其核心思想是在兩個方向分別進(jìn)行一次線性插值。本文將用Python實(shí)現(xiàn)二維圖像雙線性插值,感興趣的可以了解下
    2022-06-06
  • 詳解python實(shí)現(xiàn)線程安全的單例模式

    詳解python實(shí)現(xiàn)線程安全的單例模式

    這篇文章主要介紹了python實(shí)現(xiàn)線程安全的單例模式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Python生成可執(zhí)行文件之PyInstaller庫的使用方式

    Python生成可執(zhí)行文件之PyInstaller庫的使用方式

    PyInstaller是一個十分有用的第三方庫,通過對源文件打包,Python程序可以在沒有安裝Python的環(huán)境中運(yùn)行,也可以作為一個獨(dú)立文件方便傳遞和管理,下面這篇文章主要給大家介紹了關(guān)于Python生成可執(zhí)行文件之PyInstaller庫的使用方式,需要的朋友可以參考下
    2022-04-04
  • python 寫一個文件分發(fā)小程序

    python 寫一個文件分發(fā)小程序

    這篇文章主要介紹了python 寫一個文件分發(fā)小程序,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12
  • Pandas技巧分享之讀取多個文件

    Pandas技巧分享之讀取多個文件

    日常分析數(shù)據(jù)時,只有單一數(shù)據(jù)文件的情況其實(shí)很少見,更多的情況是,從同一個數(shù)據(jù)來源定期或不定期的采集了很多數(shù)據(jù)文件,那么如何讀取多個文件呢,下面就和大家簡單講講
    2023-07-07
  • 對numpy下的軸交換transpose和swapaxes的示例解讀

    對numpy下的軸交換transpose和swapaxes的示例解讀

    今天小編就為大家分享一篇對numpy下的軸交換transpose和swapaxes的示例解讀,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Object arrays cannot be loaded when allow_pickle=False的問題

    Object arrays cannot be loaded when

    這篇文章主要介紹了Object arrays cannot be loaded when allow_pickle=False,本文給大家分享問題解決思路,需要的朋友可以參考下
    2022-11-11
  • Python實(shí)現(xiàn)GUI學(xué)生信息管理系統(tǒng)

    Python實(shí)現(xiàn)GUI學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)GUI學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論