Python中return self的用法

发布时间:2019-06-14 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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()))

输出结果为:

<class '__main__.Foo'>

可以发现,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的用法全部内容,希望文章能够帮你解决Python中return self的用法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。