Python中return self的用法详解
在Python中,有些开源项目中的方法返回结果为self.对于不熟悉这种用法的读者来说,这无疑使人困扰,本文的目的就是给出这种语法的一个解释,并且给出几个例子。
在Python中,returnself的作用为:(英语原文,笔者水平有限,暂不翻译)
Returningselffromamethodsimplymeansthatyourmethodreturnsareferencetotheinstanceobjectonwhichitwascalled.ThiscansometimesbeseeninusewithobjectorientedAPIsthataredesignedasafluentinterfacethatencouragesmethodcascading.
通俗的说法是,allowchaining(这个是笔者自己的翻译:链式调用).
例子:
classFoo(object): def__init__(self): self.myattr=0 defbar(self): self.myattr+=1 returnself f=Foo() f.bar().bar().bar() print(f.myattr)
输出结果为4.
把bar()方法改为返回returnNone,则上述代码会出错。
classFoo(object): def__init__(self): self.myattr=0 defbar(self): self.myattr+=1 returnNone f=Foo() f.bar().bar().bar() print(f.myattr)
输出结果如下:
AttributeError:'NoneType'objecthasnoattribute'bar'
那么returnself返回的结果是什么呢?
classFoo(object): def__init__(self): self.myattr=0 defbar(self): self.myattr+=1 #returnNone returnself f=Foo() print(type(f.bar()))
输出结果为:
可以发现,returnself返回的是类的实例。
一个真实的例子:
sklearn模块中很多方法的返回结果为self,比如大多数模型的fit()方法,例子如下:
fromsklearn.linear_modelimportLogisticRegression 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中returnself的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!