zoukankan      html  css  js  c++  java
  • python 笔记8

    1 继承
    子类继承父类的一切属性

    如何使用继承

    basses 查看继承所有父类

    1 新式类 继承object的类及该类的子类都是 广度优先查询
    2 经典类 只有py2中存在经典类,py2中不会显示继承任何类,以及该类的子类

    py3中所有的类都是新式类

    派生

    派生方法

    import pickle
    class bb1():
    def init(self,age,fuck):
    self.age = age
    self.fuck = fuck
    def save(self):
    with open("./1","wb") as f:
    ss = pickle.dumps(self)
    print(ss)
    class bb2():
    def init(self,age,fuck):
    self.age = age
    self.fuck = fuck

    class cc1(bb1):
    def init(self,age,fuck,hello):
    ## 继承bb1的方法 1 直接调用父类的函数进行调用
    #bb1.init(self,age,fuck)
    ## 使用super函数,将自己的类与父类进行绑定
    # 1 super(cc1,self).init(age,fuck)
    # 2 super().init(age,fuck)
    self.hello = hello

    继承顺序 查看类的__mro__方法可以查看
    cc1.mro

    调用super可以得到一个特殊的对象,该对象会按照当前类的mro列表依次查找属性
    super按照super算法去找

    class f1():
    def f1(self):
    super().f2()
    print("f1")
    class f2():
    def f2(self):
    print("f2")

    class f3(f1,f2):
    pass

    f3().f1()

    鸭子方法
    当1类有2个函数,如果2类也有相同函数,那么这个类就是1

    组合

    1 什么是多态
    同一种事物的多种形态

    封装

    1 双下划线开头的属性,会被隐藏起来,类内部可以直接使用,类外部可以直接使用
    2 _的方法,或者属性,在类的名称空间中仍然存在,变成了 类名__方法 _foo__n例如
    3 只有在类定义时候会进行 隐藏的方法和属性会变名字,其他时候不变
    4 当父类需要隐藏自己属性时候,可以使用封装方法

    类装饰器
    @property 内置函数
    将类的方法变成属性

    class people:
    def init(self,name):
    self.__name = name
    @property
    def name(self):
    return self.__name

    @name.setter
    def name(self,val):
        print("enter set")
        if type(val) is not str:
            raise TypeError("不是字符串格式")
        self.__name = val
    
    @name.deleter
    def name(self):
        print("...")
    

    setter 和 deleter 的函数需要与property的方法名相同

    classmethod 类方法
    提供额外的实例化方式
    class MySQL:
    def init(self,host,post):
    self.host = host
    self.port = port
    @classmethod
    def from_conf(cls):
    return cls(settings.Host,settings.port)
    使用类方法, from_conf 等于调用 mysql的__init__

    staticmethod 静态方法
    不绑定类,及self方法

    isinstance(obj,foo)
    obj是否foo的实例类型

    hasattr
    hasattr(people,"x")

    getattr
    getattr(people,"x")

    setattr
    setattr(people,"x",111)

    delattr

    str print的
    repr

    del 会在对象被删除前自动触发

    内置函数
    1 abs绝对值
    2 all 可迭代对象 all[0,1,2,None] 返回True ALL [] 空时候为true
    3 any 只有一个为真,则当前列表为真
    4 bin (3) 将十进制转换为 2进制
    5 oct(9) 十进制转换8进制
    6 hex(17) 十进制转换十六进制
    7 callable 判断一个对象是否为可调用
    8 complex 负数
    9 divmod 取余数 divmod(10,3) 等于(3,1)
    10 enumerate(10) 对循环时候既可以取出索引 又可以取出值
    11 frozenset() 不可变集合
    12 hash 得到hash值
    13 ord("a") 将字符串变成ascii
    14 char(65) 将ascii变成字符串
    15 pow pwo(3,2,3) 10**2%3
    16 round round(3,5) 四舍五入
    17 slice(1,4,1)
    18 vars() 看类的名称空间,等于 .dict
    19 zip

  • 相关阅读:
    avcodec_decode_video2少帧问题
    什么是I帧,P帧,B帧
    让Ubuntu可以压缩/解压缩RAR文件
    Linux 向文件末尾追加命令
    valgrind: failed to start tool 'memcheck' for platform 'amd64-linux': No such file or directory
    《王者之剑2》性能数据精讲
    Unity加载模块深度解析(纹理篇)
    Unity加载模块深度解析(Shader)
    Unity加载模块深度解析(网格篇)
    Unity将来时:IL2CPP是什么?
  • 原文地址:https://www.cnblogs.com/liuqimin/p/9094553.html
Copyright © 2011-2022 走看看