首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python如何返回对象

Python如何返回对象
EN

Stack Overflow用户
提问于 2014-08-08 09:55:45
回答 2查看 981关注 0票数 0

我试着用Python学习OOP。下面的代码让您更好地了解我在做什么。我想返回一个对象,它允许我调用该数据上的其他方法。这条路对吗?

代码语言:javascript
复制
content = HTTP().GET(resource="photo/2/")
content.get_image()

班级

代码语言:javascript
复制
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"])

稍后,我可能想扩展这一点,然后再做。

代码语言:javascript
复制
content = HTTP().POST(resource="photo/2/", payload='{"somekye":"somevalue"}')

甚至:

代码语言:javascript
复制
content = HTTP().GET(resource="photo/2/")
content.POST(payload='{"somekye":"somevalue"}')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-08 10:01:22

你没必要这样做。您只需修改“resource”字段,然后只需对HTTP对象实例进行操作。如下所示:

代码语言:javascript
复制
content = HTTP()
content.resource(valueToSet)
content.response(valueToSet)

就是这样。

票数 1
EN

Stack Overflow用户

发布于 2014-08-08 10:10:51

如果您希望能够读取和修改属性,通常不需要getter和setter方法。

使用属性的一个很好的理由是,例如,如果您需要检查传入值并可能引发异常。

但在这种情况下,我建议您使用一种方法,这样用户就可以清楚地看到您正在执行一些代码。因为您不会期望在修改属性时出现异常。

如果要防止属性修改,则应使用metaclass

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25200724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档