为什么我不能在Python中创建这样的对象?
关于python中对象的问题。我已经创建了以下对象为什么我不能在Python中创建这样的对象?,python,Python,关于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, valu
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/")
如果我不把任何东西传递给\uuuu init\uuuu
,这看起来很愚蠢。我想知道像这样的Python包是如何实现以下语法的
requests.get('https://api.github.com/user')
不这样做
requests().get('https://api.github.com/user')
为什么,
请求
包有什么不同?请求定义了一些额外的方法,在幕后创建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)
在使用构造函数之前,没有对象可以调用
get()
。http()
@OllieFord,那么请求是如何实现的:将其作为一个类似乎没有多大意义;它有一个in属性和一个out属性,只要把它变成一个函数。@JornSharpe这只是一个例子来帮助说明这个问题,但我知道这没有什么意义。如果你查看源代码,你就会得到答案