__getattr__实现rest api

版权声明:转载请注明出处。 https://blog.csdn.net/paopaohll/article/details/83045258
class Chain(object):

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

    def __getattr__(self, path):
        # 递归调用
        return Chain('%s/%s/' % (self._path, path))

    def __str__(self):
        return self._path

    __repr__ = __str__


In[*]: Chain('api').example.index
out[*]: api/example/index

实现github api

[email protected]:username/example.git

class Chain(object):
    def __init__(self, path=''):
        self._path = path
    
    def __getattr__(self, path):
        if path == 'git':
            return Chain('%s.%s' % (self._path, path))
        return Chain('%s/%s' % (self._path, path))
    

    def users(self, username):
        return Chain('%s:%s' % (self._path, username))
        
    
    def __str__(self):
        return self._path
    
    __repr__ = __str__


In[*]: Chain('[email protected]').users('username').example.git

out[*]: git@github.com:username/example.git

猜你喜欢

转载自blog.csdn.net/paopaohll/article/details/83045258