欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

Python中的链式调用

Python基础 迷途小书童 3年前 (2020-09-26) 3004次浏览 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)

您必须 登录 才能发表评论!

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.