B站: 迷途小书童的Note;微信公众号: Dev_Club;个人微信:xituxiaoshutong100

Python中的链式调用

Python进阶 迷途小书童 0评论

软硬件环境

  • windows 10 64bit
  • anaconda3 with python 3.7

视频看这里

此处是youtube的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。

什么是链式调用

在前文 使用sqlalchemy操作mysql数据库 讲到使用SQLALchemy来进行mysql操作时,我们有如下的代码

session = DBSession()
session.query(Person).filter(Person.id == '2').update({Person.name: 'xxx'}, synchronize_session=False)
session.commit()
session.close()

重点看query查询语句query().filter().update,类似这种代码的编写方式,就是链式调用,从字面意思上来说,就是将一系列的函数像链子一样串起来的代码编写方式

示例

Python中实现一个简单的链式调用就是通过构建类方法并返回对象自身self,来看个具体的例子

class Person:

    def __init__(self, name):
        self._name = name

    def name(self):
        print("您好,我的名字叫: {}".format(self._name))
        return self

    def age(self):
        print("今年18岁!")
        return self

    def job(self):
        print("我是一名软件工程师!")
        return self


if __name__ == '__main__':
    person = Person(name = "xxx")
    person.name()
    print('-' * 20)
    person.name().age()
    print('-' * 20)
    person.name().age().job()

在这里我们创建一个Person类,传递一个name字符串参数进行实例对象的创建,在这个类里有三个方法,分别是name()age()以及job()。在这三个方法中,返回值都是self自身,那么我们就可以不断地调用对象归属类中的方法。

执行上述代码,得到

您好,我的名字叫: xxx
--------------------
您好,我的名字叫: xxx
今年18岁!
--------------------
您好,我的名字叫: xxx
今年18岁!
我是一名软件工程师!

备注

链式调用使得代码在可读性上大大的增强,同时也可以使用尽可能少的代码量去实现更多的操作。但是,链式调用并不算是完美的,它也存在着一定缺陷。比如说当链式调用的方法个数过多时,那么出错的几率就会大幅上升,从而造成调试的困难。

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址