I'm try to learn OOP in Python. The code below gives you a better idea of what I'm doing. I want to return an object what allows me to call other methods on that data. Is this the right way?
content = HTTP().GET(resource="photo/2/")
content.get_image()
Class
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"])
Later I may want to extend this and do
content = HTTP().POST(resource="photo/2/", payload='{"somekye":"somevalue"}')
or even:
content = HTTP().GET(resource="photo/2/")
content.POST(payload='{"somekye":"somevalue"}')
self.responseinstead ofselfif you want to work on theresponseotherwise you have to access it likecontent.response.get_image().