Discuss / Python / 看了大神们的 call 完全没想到。。。。。

看了大神们的 call 完全没想到。。。。。

Topic source
class Chain(object):
    def __init__(self, path=''):
        self.__path = path

    def __getattr__(self, path):
        if path == 'user':
            return lambda u : Chain('%s/%s/%s' % (self.__path, path, u))
        return Chain('%s/%s' % (self.__path, path))

    def __str__(self):
        return self.__path

    __repr__ = __str__

按题意 user 应该改为 users

千羽王爵

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

不明白u这个参数怎么拿到的

那个地方返回的是一个 lambda 表达式,你可以认为是一个匿名函数,u 是调用这个lambda表达式的参数。

为什么参数michael会被传到u中啊,不是很懂

请叫我C猫

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

class Chain(object): def init(self, path=''): self._path = path def getattr(self, path): return Chain('%s/%s' % (self._path, path)) def call(self, name=''): return Chain('%s%s' % (self._path, '/'+name if name else '')#判空啊 pass def str(self): return self.path __repr_ = __str__


  • 1

Reply