时间:2021-05-22
在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 selff = 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 Nonef = 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 selff = Foo()print(type(f.bar()))输出结果为:
<class '__main__.Foo'>
可以发现,return self返回的是类的实例。
一个真实的例子:
sklearn模块中很多方法的返回结果为self, 比如大多数模型的fit()方法,例子如下:
from sklearn.linear_model import LogisticRegressionX = [[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的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Python中return语句用法。分享给大家供大家参考。具体如下:return语句:return语句用来从一个函数返回即跳出函数。我们也可选从函
python中return的用法1、return语句就是把执行结果返回到调用的地方,并把程序的控制权一起返回程序运行到所遇到的第一个return即返回(退出de
如下所示:defshrinkImage(self):'''缩小图片:return:'''scale=0.8#每次缩小20%img=QImage(self.pat
本文实例讲述了Python面向对象之类的定义与继承用法。分享给大家供大家参考,具体如下:定义一个类类中的方法同,类外方法,默认传self值类的构造函数是__in
python实现的对文件夹中的图像进行连续的重命名方法:importosclassBatchRename():def__init__(self):self.pa