• __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)

     

  • 相关阅读:
    [HNOI2019]JOJO
    [TJOI2019]唱、跳、rap和篮球
    [ZJOI2019]开关
    jzoj5746
    [JSOI2019]神经网络(指数生成函数)
    [TJOI2019]甲苯先生的线段树
    [JSOI2019]节日庆典
    XSY1519
    XSY1528
    springboot actuator监控笔记
  • 原文地址:https://www.cnblogs.com/Deaseyy/p/10859870.html
Copyright © 2020-2023  润新知