我试着用Python学习OOP。下面的代码让您更好地了解我在做什么。我想返回一个对象,它允许我调用该数据上的其他方法。这条路对吗?
content = HTTP().GET(resource="photo/2/")
content.get_image()班级
class HTTP(object):
def __init__(self):
"""
Creates a new instance of the class and assigns local variables.
"""
self._resource = None
self._payload = None
self._response = None
@property
def resource(self):
return self._resource
@resource.setter
def resource(self, value):
self._resource = "http://api.test.com/" % value
@property
def payload(self):
return self._payload
@payload.setter
def payload(self, value):
self._payload = value
@property
def response(self):
return self._response
@response.setter
def response(self, value):
self._response = value
def GET(self, resource):
"""
Sends a GET request. Returns :class:`Response` object.
:param resource: URL for the new :class:`Request` object.
"""
self.resource = resource
self.response = requests.get(self.resource).json()
return self
def get_image(self):
"""
Gets raw image from response.
:return: image
"""
return requests.get(self.response["raw"])稍后,我可能想扩展这一点,然后再做。
content = HTTP().POST(resource="photo/2/", payload='{"somekye":"somevalue"}')甚至:
content = HTTP().GET(resource="photo/2/")
content.POST(payload='{"somekye":"somevalue"}')发布于 2014-08-08 10:01:22
你没必要这样做。您只需修改“resource”字段,然后只需对HTTP对象实例进行操作。如下所示:
content = HTTP()
content.resource(valueToSet)
content.response(valueToSet)就是这样。
发布于 2014-08-08 10:10:51
如果您希望能够读取和修改属性,通常不需要getter和setter方法。
使用属性的一个很好的理由是,例如,如果您需要检查传入值并可能引发异常。
但在这种情况下,我建议您使用一种方法,这样用户就可以清楚地看到您正在执行一些代码。因为您不会期望在修改属性时出现异常。
如果要防止属性修改,则应使用metaclass。
https://stackoverflow.com/questions/25200724
复制相似问题