• python全栈学习--面向对象进阶3


    复习:

    #反射 必须会,必须能看的懂,必须知道在哪儿用

    #hasattr  getattr setattr delattr

    内置方法 必须能看懂 能用尽量用

    __len__len(obj)的结果依赖于obj.__len()__的结果,计算对象的长度

    __hash__ hash(obj)的结果依赖于obj.__hash__()的结果,结算对象的hash值

    __eq__ obj1 == obj2 的结果依赖于obj.__eq__()的结果,用来判断相等

    __str__ str(obj) print(obj) '%s'%obj 的结果依赖于__str__,用来做输出、显示

    __repr__ repr(obj) '%r'%obj的结果依赖于__repr__,还可以做str的备胎

    __format__ format() 的结果依赖于__format__的结果,是对象格式化的

    __call__ obj() 相当于调用 __call__, 实现了__call__的对象是callable 的

     __new__  构造方法,在执行__init__之前执行,负责创建一个对象,在单例模式中有具体的应用

    __del__ 析构方法,在对象删除的时候,删除这个对象之前执行,主要用来关闭在对象中打开的系统资源

    class A:
         def __getitem__(self, item):
             print(item)
    a = A()
    

    __getitem__  对象[]的新式对对象进行增删改查

    __setitem__

    __delitem__

    __delattr__  del obj.attr  用来自定义删除一个属性的方法

    只有一个对象,只开了一个内存空间

    创建一个类 单例模式中的对象属性编程类中的静态属性,所有的方法变成类方法

    设计模式---java

    python中的单例模式  是使用__new__

    python

    显示一个对象中的所有a开头的属性

    二,模块

    py文件就是模块

    python之所以好用,模块多

    三种

      1.内置模块

        python安装的时候自带的

      2.扩展模块

        例如:

          itchat

          beautiful soap

          selenium  网页自动化测试工具

          django  tornado 

      3.自定义模块

    内置模块

    序列化模块

    hashlib 模块

    序列化模块

    能存储在文件中的一定是字符串,或者是字节

    能在网络上传输的 只有字节

    dic = {"层数":(90,23)}
    print(str(dic))
    print(str(dic).encode(encoding='utf-8'))
    ##注意上面中文才会显示下方 xe5........

      

    dic = {"层数":(90,23)}
    print(str(dic))
    print(str(dic).encode(encoding='utf-8'))
    b"{'xe5xb1x82xe6x95xb0': (90, 23)}"
    s = b"{'xe5xb1x82xe6x95xb0': (90, 23)}"
    res = s.decode(encoding='utf-8')
    print(res)
    

      

    # dic --> 字符串  序列化
    #字符串 --> dic 反序列化
    #序列化 == 创造一个序列 ==》创造一个字符串
    #实例化 == 创造一个实例
    import json
    #序列化
    dic = {"john":(190,90)}
    ret = json.dumps(dic,ensure_ascii=False)
    print(type(dic),dic)
    print(type(ret),ret)
    print('*',str(dic)) #土办法
    #反序列化
    res = json.loads(ret)
    print(type(res),res)
    

      执行输出:

    f = open('john','r',encoding='utf-8')
    ret = json.load(f)
    print(type(ret),ret)
    

      执行输出

    dump 序列化  load反序列化   主要用于一个数据直接存在文件里直接和文件打交道

    dumps序列化 loads反序列化   只在内存中操作数据  主要用于网络传输和多个数据与文件打交道

    import pickle

    
    
  • 相关阅读:
    十度好友问题
    TCP传输连接建立与释放详解
    Android多点触控技术实战,自由地对图片进行缩放和移动
    如何判断一个变量是数组Array类型
    HDU 4725 The Shortest Path in Nya Graph-【SPFA最短路】
    解决外贸电商难题,PayPal中国外贸电商大会圆满礼成
    动物-蛇:家蛇
    动物-蛇:水蛇
    动物-鱼:河蟹
    动物-鱼:河虾
  • 原文地址:https://www.cnblogs.com/haowen980/p/8893308.html
Copyright © 2020-2023  润新知