__dict__用法-json使用

dict使用


print()
'''
__dict__ 获取对象封装的所有属性,以字典形式保存
'''class student():
    # __slots__ = ("name","age")  #使用slots后实例对象不再有__dict__属性
    def __init__(self,name,age):
        self.name = name
        self.age = age
​
dict1={"age":1,"k":5}
dict2={"age":1,"k":5,"score":80}
stu = student("lili",18)
stu2=student("aa",20)
print(stu.__dict__)
print(stu.age)
stu.__dict__ = dict1  #可以将该对象封装的所有属性重新赋值
stu.__dict__ = dict2  #可以将该对象封装的所有属性重新赋值
print(stu.__dict__) #赋值后结果已改变
print(stu.age)
print(stu.score)  #改变了该对象name,age属性,增加了score属性
print(stu2.age)  #不会改变类中其他对象的属性

json

 1 import json
 2 class student():
 3     def __init__(self,name,age,sex):
 4         self.name = name
 5         self.age = age
 6         self.sex = sex
 7 stu1 = student("lili",18,True)
 8 def objDict(obj):
 9     return {"name":obj.name,"age":obj.age,"sex":obj.sex}
10 11 with open("dem1","w") as f:
12     # stuDict1 = objDict(stu1)  ##将student类型转为字典(基本类型)
13     # strjson = json.dumps(stuDict1)  ##将python字典转为json字符串类型
14     # print(strjson)
15     # f.write(strjson)
16 17     # strjson = json.dumps(stu1,default=objDict)
18     strjson = json.dumps(stu1,default=lambda obj:obj.__dict__)
19     f.write(strjson)
20 21 with open("dem1","r") as f1:
22     stuDict2 = f1.read()
23     res = json.loads(stuDict2)  #将json字符串转为python字典类型
24     # stu1 = student(res["name"],res["age"],res["sex"])
25     stu1.__dict__ = res   #将得到的属性字典直接赋值给对象__dict__获取到的属性
26 27 print(stu1.name)
28 print(stu1.age)

 

 

posted @ 2019-05-14 00:05  Deaseyy  阅读(476)  评论(0编辑  收藏  举报