zoukankan      html  css  js  c++  java
  • 2019-8-18 序列化与面向对象

    今日内容

    序列化模块

    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)
    
  • 相关阅读:
    开发导致的内存泄露问题,运维小伙伴儿这样排查不背锅
    JVM垃圾回收器、内存分配与回收策略
    笔试编程(二) | 7种常见的排序算法解析(附实现代码)
    HBase高级特性、rowkey设计以及热点问题处理
    Geotools创建Feature的两种方式
    geotools实现追加数据到数据库
    Java连接mysql数据库经典代码
    leaflet加载高德地图和Geoserver的WMS服务
    geotools学习之连接数据库并获取数据
    LeaFlet中切片图层使用自定义坐标系
  • 原文地址:https://www.cnblogs.com/yihutu/p/11397208.html
Copyright © 2011-2022 走看看