软硬件环境
- 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岁!
我是一名软件工程师!
备注
链式调用使得代码在可读性上大大的增强,同时也可以使用尽可能少的代码量去实现更多的操作。但是,链式调用并不算是完美的,它也存在着一定缺陷。比如说当链式调用的方法个数过多时,那么出错的几率就会大幅上升,从而造成调试的困难。