zoukankan      html  css  js  c++  java
  • 类的整理

    对象是特征与技能的结合体

    类是一系列对象相同的特征和技能的结合体

    如何定义类

    首先定义类,后调用类创造对象

    定义类的语法

    class 类名:
     对象相同的特征
     对象相同的技能
    class 用来定义类的,class后跟类名
    
    

    注意:类名必须要遵循驼峰命名法

    在定义类发生的事情

    1. 类在定义时,会产生一个空的名称空间

    2. 会把类内部所有名字,扔进类的名称空间

      注意: 类在定义阶段就已经产生好了名称空间

      执行python文件时会执行类内部的代码

    类名会指向类的名称空间

    类“.”特征或技能的方式对类内部的变量值进行修改

    “.”会指向类内部的名称空间,从而获取变量值

    类的操作有

    增、删、改、查

    对象

    如何产生对象:

    语法:

    ​ 类名() 调用类产生对象

    名称空间的产生

    1. 类的名称空间在类定义阶段就已经产生了
    2. 对象的名称空间,在调用类时产生

    __init__魔法函数在调用类时,自动触发该函数

    给对象添加属性的方式

    self.name = x

    stu1.age = 10

    查看名称空间

    __dict__

    对象与类的查找顺序

    1. 对象.属性,若对象本身有,则优先查找对象自己的
    2. 若对象没有,则取类里面找,若类没有,则报错

    对象绑定方法的特殊之处

    类内部函数主要是给对象用的

    1. 由类来调用类内部的函数,该函数只是一个普通函数,

    ​ 普通函数需要接收几个参数就得传入几个参数

    1. 由对象来调用称之为绑定方法

      不同对象调用该绑定方法,则会将不同的对象传入该绑定方法中

    继承

    继承是一系列类相同特征和技能

    继承父类的属性和方法

    __bases__查找当前父类

    先抽象再继承

    问题复杂不好分析时先抽象再继承

    在继承的背景下,对象属性的查找顺序

    1. 对象查找属性会先从对象的名称空间中查找
    2. 若对象没有,则回去类里面寻找
    3. 若当前类是子类,并且没有对象找的属性,会去父类查找

    注意: 对象查找属性,若子类由,不管父类有没有,以子类的为准

    派生

    派生指的是子类继承父类的属性,并且派生出新的属性

    子类派生出新的属性,若与父类的属性相同,则以子类的为准

    子类派生出新的属性,并重用父类

    父类.__init__

    super().__init__

    新式类与经典类

    新式类继承object

    经典类没有继承object

    mro()

    查看当前类的继承顺序

    钻石继承

    在多继承的情况下

    经典类 深度优先

    新式类 广度优先

    组合

    继承

    类与类的关系,子类与父类的关系

    组合

    对象与对象的关系,一个对象拥有另外一个对象

    @property

    在调用是时候不用加上括号来调用可用在if判断语句中

    多态与多态性

    在使用不同类事物时候,使用的方法名称相同

    抽象类,abc @abc

    所有子类都遵循父类的方式,使用abc模块,来定死方式

    鸭子类型(风格)

    像多态一样工作,但是没有继承,关注对象的方法

    多态炫技

    由一堆相同方法的类,对类的功能抽象化后使用一个定义函数然后统一调用

    访问限制

    由__开头的变量或者函数变为__类名_变量名

    @classmethod

    1. 对象的绑定方法
    2. 类的绑定方法

    @staticmethod

    非绑定方法

    可以装饰类内部的方法,使该方法即不绑定给对象,也不绑定给类,变为一个普通函数

    uuid

    一个加密模块,uuid4随机数字,uuid1基于时间戳

    __class__

    对象的属性,获取该对象当前的类

    isinstance

    判读参数1是否属于参数2的一个实例

    issubclass

    判断参数1是否是参数2的子类

    反射

    通过字符串对对象或类的属性进行验证或操作

    hasattr

    判断字符串是否是对象或类的属性

    getattr

    获取对象或类的属性

    setattr

    设置对象或类的属性

    delattr

    删除对象或类的属性

    魔法方法(类的内置方法)

    __init__ 在调用类的时候触发

    __str__ 会在打印对象的时候会触发

    __del__对象被销毁前执行该方法,该方法会在最后执行

    __getattr__ 会在对象.属性时候,属性没有的情况下才触发

    __setattr__ 会在 “对象.属性 = 属性值 “时触发

    __call__ 会在对象被调用的时候触发

    __new__ 会在__init__ 执行前执行

    单例模式

    class File:
        __instance = None
        @classmethod
        def singleto(cls,file_name):
            if not cls.__instance:
                obj = cls(file_name)
                cls.__instance = obj
                return cls.__instance
    
  • 相关阅读:
    QT,QVector 基本用法,遍历[实例讲解]
    QT boolinq
    Qt532.QString_填充字符
    QT AES加密
    允许ubuntu下mysql远程连接
    Curl参数一览
    PHP实现http与https转化
    LINUX查看硬件配置命令
    使用.htaccess的时候服务器出现500错误(在配置后台时出现)
    64位win7旗舰版搭建apache+php+mysql开发环境
  • 原文地址:https://www.cnblogs.com/kaizi111/p/11669245.html
Copyright © 2011-2022 走看看