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

Python中return self的用法詳解

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

在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é)果為:

<class '__main__.Foo'>

可以發(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]

總結(jié)

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

相關(guān)文章

最新評論