zoukankan      html  css  js  c++  java
  • __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)

     

  • 相关阅读:
    JavaScript—飞机大战
    JavaScript—瀑布流
    JavaScript—原生轮播和无缝滚动
    JavaScript—封装animte动画函数
    JavaScript—offset、client、scroll
    JavaScript—对象创建方式
    JavaScript—var lef const区别
    P1352 没有上司的舞会 题解
    P1829 [国家集训队]Crash的数字表格 / JZPTAB 题解
    P2522 [HAOI2011]Problem b 题解
  • 原文地址:https://www.cnblogs.com/Deaseyy/p/10859870.html
Copyright © 2011-2022 走看看