python教程

当前位置:首页 > python进阶 > 当前文章

python进阶

在python中实现链式调用-小技巧

2019-06-06 142赞 老董笔记

  链式调用在js的JQuery框架中很常见,看起来也很帅气,比如$('text’).setStyle('color', 'red').show(),一般的函数调用和链式调用的区别是链式调用完方法后,return返回调用该方法的对象。

  那么链式调用在python里面如何实现呢。按照传统的方式定义1个类然后测试下:

class Person:
  def __init__(self,name,age):
    self.name = name
    self.age = age

  def eat(self,sth):
    print(self.name,'eat',sth)

  def drink(self, sth):
    print(self.name,'drink',sth)

p = Person('lao wang',18)
p.eat("rice").drink('water')
AttributeError: 'NoneType' object has no attribute 'drink'

  上述代码提示NoneType' object has no attribute 'drink',说明第1个方法eat返回的是None,如果eat里面能返回Person类的对象那么必然可以调用drink方法,如何返回Person对象呢?直接return self即可,self指的就是这个类实例化后的对象,关于self的理解可以查看python面向对象self是什么

  在函数中return self后就实现了链式调用:

class Person:
  def __init__(self,name,age):
    self.name = name
    self.age = age

  def eat(self,sth):
    print(self.name,'eat',sth)
    return self

  def drink(self, sth):
    print(self.name,'drink',sth)

p = Person('lao wang',18)
p.eat("rice").drink('water')
lao wang eat rice
lao wang drink water

感兴趣直接点击图片获取>>

文章评论

在python中实现链式调用-小技巧文章写得不错,值得赞赏