关于python中的对象的问题。我创建了以下对象。

class http(object):
    def __init__(self):
         self._resource = None
         self._response = None

    @property
    def resource(self):
        return self._resource

    @resource.setter
    def resource(self, value):
        self._resource = "http://127.0.0.1:8000/%s" % value


     def get(self, resource=None):
        self.resource = resource
        self._response = requests.get(self.resource)
        return self._response


在这个阶段,Init不需要任何东西,所以我希望可以创建这样的对象。

content = http.get("users/")


但它不会让我这样做,相反,我必须通过使用语法http(),但什么都不传递...

content = http().get("users/")


如果我不将任何内容传递给__init__,这似乎很愚蠢。我想知道像requests这样的Python包如何实现以下语法。

requests.get('https://api.github.com/user')


不这样做...

requests().get('https://api.github.com/user')


为什么,requests软件包有什么不同?

最佳答案

请求定义了一些额外的方法,这些方法在幕后创建Requests.request的实例。您可以为http类做同样的事情。

class http(object):
    def get(self, resource=None):
        self.resource = resource
        self._response = requests.get(self.resource)
        return self._response

def get(resource=None):
    temp_instance = http()
    return temp_instance.get(resource)

关于python - 为什么我不能在Python中创建这样的对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25340910/

10-12 21:09