Discuss / Python / 交作业

交作业

Topic source

___Hiboboo

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

不得不说,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

  • 1

Reply