今日内容
序列化模块
json模块
json是一种通用的数据传输格式,本质就是一个字符串.
序列化(dump/dumps)和反序列化(load/loads)
import json
dic = {'北京':{'朝阳':{},'海淀':{}}}
text= json.dumps(dic,ensure_ascii=False) # 序列化的过程 把字典/其它数据类型转换成字符串
# 如果字典中有中文,希望写入文件的数据也显示为中文,就需要添加参数ensure_ascii=False
print(text)
with open('city',mode = 'w',encoding='utf-8') as f:
f.write(text)
with open('city',encoding='utf-8') as f:
str_d = f.read()
print(str_d)
dic = json.loads(str_d)
print(dic)
//和文件操作时dump和load方法可简化步骤
import json
lst = ['alex',1,2,3]
with open('file','w',encoding='utf-8') as f:
json.dump(lst,f)
import json
with open('file',encoding='utf-8') as f:
ret = json.load(f)
print(ret)
pickle模块
pickle和json的区别
pickle 支持python中的几乎所有数据类型,但是只能python一种语言中使用
json 支持所有的语言,但只支持有限的数据类型
import pickle
dic = {'北京':{'朝阳','昌平'},('天津','河北'):[1,2,3]}
ret = pickle.dumps(dic)
print(ret)
d = pickle.loads(ret)
print(d)
with open('pickle_file','wb') as f:
pickle.dump(dic,f)
with open('pickle_file', 'rb') as f:
ret = pickle.load(f)
print(ret)
面向对象
初识面向对象
什么是类? 一系列具有相同属性和相似方法的事物的抽象
什么是对象? 一个带有具体属性值的类的实例
什么是实例化? 通过类创造对象的过程
面向对象语法
class Person: # Person是类
def __init__(self,name,hp,ad,sex,job):
self.username = name
self.hp = hp
self.ad = ad
self.sex = sex
self.job = job
alex = Person('alex',100,5,'不详','乞丐') # alex是对象 这是实例化的过程
class Person:
def __init__(self,name,hp,ad,sex,job):
self.username = name
self.hp = hp
self.ad = ad
self.sex = sex
self.job = job
class Dog:
def __init__(self,name,kind,hp,ad): # 初始化方法
self.name = name
self.kind = kind
self.hp = hp
self.ad = ad
def bite(self,person):
person.hp -= self.ad
print('%s咬了%s,%s掉了%s点血'%(self.name,person.username,person.username,self.ad))
# 谁在类的外部调用了这个方法,方法中的第一个self参数就是谁
alex = Person('alex',100,5,'不详','乞丐')
旺财 = Dog('旺财','teddy',2000,300)
二饼 = Dog('二饼','哈士奇',10000,500)
二饼.bite(alex) # Dog.bite(二饼,alex)
print(alex.hp)