str'对象没有'__dict__'属性
我想把一个字典转换成JSON格式,在Python中遇到了一个错误,提示说这个'str'对象没有'dict'这个属性。以下是我的代码...
from django.utils import simplejson
class Person(object):
a = ""
person1 = Person()
person1.a = "111"
person2 = Person()
person2.a = "222"
list = {}
list["first"] = person1
list["second"] = person2
s = simplejson.dumps([p.__dict__ for p in list])
然后出现的异常是:
Traceback (most recent call last):
File "/base/data/home/apps/py-ide-online/2.352580383594527534/shell.py", line 380, in post
exec(compiled_code, globals())
File "<string>", line 17, in <module>
AttributeError: 'str' object has no attribute '__dict__'
3 个回答
3
你现在用的是字典,而不是列表。如果你想让你的代码正常工作,应该把它改成列表,比如这样:
list = []
list.append(person1)
list.append(person2)
6
你觉得 [p.__dict__ for p in list]
这个代码在干嘛呢?
因为 list
其实不是一个列表,它是一个字典,所以 for p in list
这个部分是在遍历字典里的键值对。字典的键是字符串。
千万不要用像 list
或 dict
这样的名字来命名变量。
而且也不要对数据类型撒谎。你的 list
变量其实是个字典,叫它 "person_dict" 会让你更开心。
7
这样怎么样
s = simplejson.dumps([p.__dict__ for p in list.itervalues()])