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)