Discuss / Python / 解

よろしく

#1 Created at ... [Delete] [Delete and Lock User]
class Chain(object):

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

    def __call__(self,user):
        return Chain('%s/%s' % (self._path, user))
    
    def __getattr__(self, path):
        return Chain('%s/%s' % (self._path,path))

    def __str__(self):
        return self._path

    __repr__ = __str__
    
print(Chain("//usr/lib").users('michael').repos)
#输出://usr/lib/users/michael/repos

#分割线------------------------------------------------------

class Chain(object):

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

    def users(self,str):
        self.name = str
        return self
    def __getattr__(self, path):
        return Chain('%s/%s/%s' % (self._path, self.name ,path))

    def __str__(self):
        return self._path

    __repr__ = __str__
    
print(Chain("//usr/lib").users('michael').repos)
#输出://usr/lib/michael/repos

よろしく

#2 Created at ... [Delete] [Delete and Lock User]

直白粗暴的记忆方法:__getattr__用于捕捉实例的属性.xxx,__call__用于捕捉实例的调用(xxx)。


  • 1

Reply