• 面向对象>>类(三大特性:继承多态封装)>>反射,内置函数/方法,


    类(class): 具有相同属性和方法的对象的集合. 对象是类的实例 
    两种属性:  1,静态变量.
                       2,方法, 函数
    类的操作:
        创建类:  使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:
        类名角度: 操作静态字段: 1, 查询类中的全部属性   .__dict__
                                               2, 万能的点 .    可以进行 增删改查                       
        对象角度: 操作静态字: 操作类中的方法(除了类方法,静态方法 需要类名调用之外,剩下的方法都要对象调用)    
    对象实例化过程:        
            1, 创建了一个对象空间,实例空间,含有一个类对象指针.
            2, 并将我的对象空间传给self,自动执行__init__方法.
            3, 将这个对象的空间返回给调用者.
    组合: 给一个类的对象封装一个属性,这个属性是另一个类的对象.
    >>>>>------------------------------------------------------------------------------------
     
     
    一,
    父类又称为基类,超类,          子类又称为派生类
    继承: 子类中实现父类的方法
         继承的意义: 1, 优化代码, 节省代码
                              2, 提高代码复用性.
                              3, 提高代码的维护性
                              4, 让类与类之间发生关系                     
                            (ps: 组合: 让对象与对象发生关系)
        单继承: 新式类和经典类一样.
        多继承:
                    新式类(继承object类的): 广度优先      类名 . mro() 查询继承顺序
                    经典类(不含有object的): 深度优先
     
    二,
    抽象类, 接口类:  python 没有这两个概念
    目的是制定一个规范,需要引入abc模块, 为了实现归一化设计
    例子有 微信支付宝京东支付功能中,强制含有统一的pay方法
     
    三,
    多态是Java定义的名词
    python是弱类型语言,没有具体的多态,处处是多态,但是有鸭子类型 : 
            例如: 不同的内置函数中有相同的方法,这些类就互称为鸭子
    四,
    封装,私有化,
    广义的封装: 实例化一对象,给对象空间封装一些属性.
    狭义的封装: 私有制   在静态变量或者方法前面加上 __ (两段下划线)就可以化为私有(本质是在变量或方法名前加上"_类名")
                        私有成员:静态私有字段, 静态私有方法, 静态私有对象属性
                        私有静态字段/方法,只有在类的内部可以访问   
                        在类的外部不能调用 访问,在子类中不能访问
    五,
    属性:  @property   声明
    将方法伪装成一个属性,在代码的级别上没有本质的提升但是看起来更合理
                @属性名. setter     更改返回值
                @属性名. deleter   删除属性
    六,
    @classmethod
    类方法: 通过类名调用的方法, 类方法中的一个参数约定成俗称cls, python自动将类名(类空间)传给cls, 可以用点进行各种操作.
    使用场景:
    1, 无需对象参与. 
    2, 对类中的静态变量进行修改.
    3, 在父类中 通过类方法得到子类的类空间,进行所有操作.
     
    静态方法:
    @staticmethod   声明一个 静态方法
    1, 形成代码块, 条理更清晰
    2, 提高代码复用性,  (通过类的继承)
    内置函数:    
        isinstance(对象名,类名) 判断对象所属类型,包括继承关系
        issubclass(子类名, 基类名) 判断类与类之间的继承关系
    什么是反射?
        用字符串数据类型的变量名来访问这个变量的值
    反射的方法: getattr[调用方法]     hasattr[判断属性/方法是否在类或模块中] 
                         setattr[类名,"属性","重命名"]   delattr[删除属性/方法]
    反射在面向对象中的应用:  查看属性, 调用方法
        命名空间.属性/方法 = getattr(命名空间, "属性/方法")
    反射在模块中的应用:
        模块名. 方法 = getattr(模块名,"方法")
    内置方法:    又叫 双下方法, 魔术方法.    结构 : __方法名__   类中的双下方法 没有 需要你在外部直接调用的, 而是自动触发的
        __call__  相当于   对象()
        __new__  开辟内存空间的类的构造方法
        __len__  =  len( obj )    属性中含有__len__的数据类型才可以计算长度
        __init__初始化方法封装对象属性
        __str__  返回对obj的描述
                print一个对象相当于调用一个对象的__str__方法
                str(obj),相当于执行obj.__str__方法
                '%s'%obj,相当于执行obj.__str__方法
     
     
     
     
  • 相关阅读:
    通过源码安装PostgresSQL
    mysql 8.0.16 单主 mgr搭建
    美团点评SQL优化工具SQLAdvisor开源快捷部署
    通过springboot 去创建和提交一个表单(七)
    在springboot中验证表单信息(六)
    调度任务(五)
    接收上传的multi-file的文件(四)
    消费Restful的web服务(三)
    关于RabbitMQ服务器整合(二)
    在springboot中用redis实现消息队列
  • 原文地址:https://www.cnblogs.com/sun-ming-ji/p/9392400.html
Copyright © 2020-2023  润新知