这篇文章主要介绍了Python中return self的用法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

在Python中,有些开源项目中的方法返回结果为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(这个是笔者自己的翻译: 链式调用).

例子:

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)

输出结果为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)

输出结果如下:

AttributeError: 'NoneType' object has no attribute 'bar'

那么return self返回的结果是什么呢?

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()))

输出结果为:

可以发现,return self返回的是类的实例。

一个真实的例子:

sklearn模块中很多方法的返回结果为self, 比如大多数模型的fit()方法,例子如下:

from sklearn.linear_model import LogisticRegression
X = [[0,0], [0,1], [1,0], [1,1]]
y = [0, 1, 1, 0]
clf = LogisticRegression()
# fit函数返回的结果就是self, 允许链式调用
t = clf.fit(X,y).predict([[0,2]])
print(t)

输出:

[0]

总结

以上所述是小编给大家介绍的Python中return self的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对爱安网网站的支持!

最新资讯
国铁集团:24日0时起 铁路免收退票费扩至全国

国铁集团:24日0时起 铁

为全力做好新型肺炎疫情防控工作,中国国家铁路集团有限
暴风集团:存在无法在法定期内披露2019年度报告风险

暴风集团:存在无法在

暴风集团发布公告称,截至目前,公司尚未聘请首席财务官和
拼多多通过收购获支付牌照? 回应:不予置评

拼多多通过收购获支付

针对网传“拼多多正式收购付费通获得支付牌照”一事,拼
中兴通讯:本次非公开发行股票将于2020年2月3日上市

中兴通讯:本次非公开

中兴通讯发布公告称,本次非公开发行股票将于2020年2月3
特斯拉市值超千亿 马斯克领取首份工资

特斯拉市值超千亿 马

特斯拉市值超过千亿美元,也标志着特斯拉CEO马斯克即将
华为开发者大会2020因疫情延期至3月:以直播呈现

华为开发者大会2020因

华为官方宣布,基于新型冠状病毒感染的肺炎疫情防控形势
最新文章
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件

使用PyInstaller将Pyg

这篇文章主要介绍了使用PyInstaller将Pygame库编写的
Python数学形态学实例分析

Python数学形态学实例

这篇文章主要介绍了Python数学形态学,结合实例形式分
Python scipy的二维图像卷积运算与图像模糊处理操作示例

Python scipy的二维图

这篇文章主要介绍了Python scipy的二维图像卷积运算与
python自动发微信监控报警

python自动发微信监控

这篇文章主要为大家详细介绍了python自动发微信监控报
修改 CentOS 6.x 上默认Python的方法

修改 CentOS 6.x 上默

这篇文章主要介绍了修改 CentOS 6.x 上默认Python的方
Python使用Slider组件实现调整曲线参数功能示例

Python使用Slider组件

这篇文章主要介绍了Python使用Slider组件实现调整曲线