[python 进阶] 链式调用原理

#!/usr/bin/env Python3
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @virtualenv:workon
# @contact: 1040691703@qq.com
# @Desc:Code descripton
__author__ = '未昔/AngelFate'
__date__ = '2020/5/30 20:00'


class Path(object):

    def __init__(self, path=''):
        self._path = path

    def __getattr__(self, path):
        return Path('%s/%s' % (self._path, path))

    def __str__(self):
        return self._path

print(Path().status.wangwei.timeline.list)

[python 进阶] 链式调用原理

利用完全动态的__getattr__,写出一个链式调用.

在这里使用了递归,在调用时 Path().status.wangwei.timeline.list 中每一个 "." 就是一次调用 __getattr__ 方法。所以就可以理解为什么在输入时要使用 xx.xx 的格式