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
直白粗暴的记忆方法:__getattr__用于捕捉实例的属性.xxx,__call__用于捕捉实例的调用(xxx)。
Sign in to make a reply
よろしく