Discuss / Python / 这样理解。

这样理解。

Topic source

class Chain(object): def init(self, path=''): self._path = path def getattr(self, path): return Chain('%s/%s' % (self._path, path)) def call(self, path): return Chain('%s/:%s' % (self._path, path)) def str(self): return self._path repr = str print(Chain().a.b.user("myname").c.d,'' '第一步:Chain()为一实例,先调用init,self._path为'',接着.a,但没有这个属性,调用getattr,' '返回Chain(''/a)即Chain(/a),此时把他看为一实例,又调用——init——,接着.b,调用--getattr--,' '返回Chain(/a/b),又为一实例,调用--init--,接着.user,调用--getattr--,返回Chain(/a/b/user)' '又为一实例,调用--init--,接着.(),调用--call--,返回Chain(/a/b/user/:myname),同理.c.d,' '最终返回:/a/b/user/:myname/c/d')


  • 1

Reply