不得不说,Python这种语法让我一个做Java的一时半会儿思维无法转变过来。
__call__ = __getattr__
这种语法我可以理解为相当于Java中的在call方法里调用getattr,不知道是否有毛病?举例Java:
@Override public String call() { return getattr(); }
之所以写出来,如果这里有Java过来的童鞋,希望对大家都理解有一丢丢的帮助。
# -*- coding: utf-8 -*- class Chain(object): def __init__(self, path=""): self.__path = path def __getattr__(self, path=":uname"): return Chain("%s/%s" % (self.__path, path)) __call__ = __getattr__ def __str__(self): return self.__path __repr__ = __str__ print(Chain().api.server.user.timeline.api) print(Chain().api.server.user().timeline.api) print(Chain().api.server.user("Lisa").timeline.api)
结果:
/api/server/user/timeline/api /api/server/user/:uname/timeline/api /api/server/user/Lisa/timeline/api
Sign in to make a reply
___Hiboboo
不得不说,Python这种语法让我一个做Java的一时半会儿思维无法转变过来。
这种语法我可以理解为相当于Java中的在call方法里调用getattr,不知道是否有毛病?举例Java:
之所以写出来,如果这里有Java过来的童鞋,希望对大家都理解有一丢丢的帮助。
结果: