如何将REST响应内容“神奇地”从“列表”转换为“字符串”

时间:2013-04-29 19:10:12

标签: python rest

>>> print type(a)
<type 'list'>
>>> response.content = a
>>> print type(response.content)
<type 'str'>

你能解释一下这个“神奇吗?” a如何从list转换为string

responserest_framework.response.Response的实例。

2 个答案:

答案 0 :(得分:8)

只有几种方法可以让你有这样的事情发生。最常见的原因是如果将response.content实现为某种描述符,可能会发生类似这样的有趣事情。 (像这样操作的典型描述符将是property对象)。在这种情况下,属性的getter将返回一个字符串。作为一个正式的例子:

class Foo(self):
    def __init__(self):
        self._x = 1

    @property
    def attribute_like(self):
        return str(self._x)

    @attribute_like.setter
    def attribute_like(self,value):
        self._x = value

f = Foo()
f.attribute_like = [1,2,3]
print type(f.attribute_like)

答案 1 :(得分:2)

我想这个类通过定义__setattr__方法进行转换。您可以阅读http://docs.python.org/2.7/reference/datamodel.html#customizing-attribute-access了解更多信息。