zoukankan      html  css  js  c++  java
  • 面向对象高级

    python中一切皆对象,

    isinstance()判断某个对象是否为某个类的实例

    issubclass()哦安短一个类是不是另一个类的子类

    反射:

    反省,对象具备一种修正错误的能力

    hasattr 是否存在某个属性

    getattr 获取某个属性的值

    setattr 设置某个属性的值

    delattr 删除某个属性

    反省就是通过字符串操作属性

    当不清楚对象细节时,就可以使用反省

    在编写代码期间,明确知道访问的属性没有必要使用反射

    不清楚时需要使用反射

    可以通过反射的方式为对象增加一个方法,这样的方式增加的方法只是一个普通函数不会自动传值

    前后都有双下划线的函数为内置函数,在特定时期自动执行,一般不会直接调用

    当需要自定义打印显示内容时,需要覆盖__str__方法,该方法必须返回一个字符串

    将一个对象转换字符串时本质就是在调用这个对象__str__方法

    __del__当对象被从内存中删除时会自动执行,手动删除也会执行

    python中1有自动内存管理机制,所以python自动创建的数据不需要操作,

    当使用python打开不属于python管理的数据时,就需要使用__del__关闭系统资源

    __del__被称为析构函数

    exec:execute的缩写,执行,作用:帮助解析执行python代码,并将得到的名称存储到指定的名称空间

    解释器内部也是调用它来执行代码的

    参数一:需要一个字符串对象,表示要执行的python语句

    参数二:是一个字典,表示全局名称空间

    参数三:也是字典,表示局部名称空间

    如果同时指定全局与局部,则会将字符串中表示名称解析后存到局部中

    如果只传一个参数则将字符串中包含名称解析后存到全局中

    一切皆对象,元类指用于产生类的类,type就是元类

    所有的自定义类都是通过type实例化得来

    创建模块的过程:

    1.创建一个空的名称空间

    2.执行内部的代码

    3.将得到的名字放到名称空间中

    类也是对象,使用type可以发现,类就是type类的实例(对象)

    可以自己调用type来实例化产生一个类

    类是由type实例化产生的

    可以使用type产生一个类

    一个类是由类名,类的父类元组,类的名称空间三个部分组成

    __call__

    在对象被调用时执行,

    自定义元类的目的:

    1.可以通过__call__来控制对象的创建过程

    2.可以控制类的创建过程

    自定义元类需要继承type

    生成对象的三步

    1.创建空对象 

    obj= object.__new__(self)

    2.调用初始化方法

    self.__init__(obj,*args,**kwargs)

    3.得到一个完整的对象

    return obj

    当调用对象时,会执行该对象所属类中的__call__方法

    要控制类的创建过程,只要找到类所属的类中的__init__即可

    父类中创建子类对象所需的四个参数:

    1.self,需要创建的类

    2.类的名字

    3.类的所有父类,类型为元组

    4.这个类的名称空间

    可以通过__doc__获取文档注释

    也可以在类的__init__控制该类对象的创建过程

    元类使用总结:

    元类是用于创建类的类,使用元类是为了控制类的创建过程,以及类实例化对象的过程

    一.

    控制类的创建过程

    1.创建一个元类(需要继承type)

    2.覆盖__init__方法,该方法会将创建的对象,类名,所有父类,名称空间都传进来

    可以利用这些信息进行控制过程

    3.对于需要被控制的类,需要指定metaclass为上面的元类

    二:

    控制类实例化对象的过程

    1.创建一个元类(需要继承type)

    2.覆盖__call__方法,会将正在实例化对象的类调用类时传递的参数都传进去

    3.在__call_-方法中,必须要编写模板代码

    3.1创建空对象

    3.2调用类的__init__方法来初始化这个空对象

    3.3返回该对象

    4.加入需要控制的逻辑

    类的三个组成部分:

    类名 父类门 名称空间

    元类--->实例化产生----->类-------->实例化产生----------->对象

    单例模式:

    单个实例的模式,即一个类只有一个实例化对象

    通过控制__call__方法实现

    类有一个名为__init__()的特殊方法(构造方法),该方法会在类实例化时自动调用,类定义了__init__()的方法,类的实例化操作会

    自动操作调用__init__()方法,该方法可以有参数

  • 相关阅读:
    SpriteKit改变Node锚点其物理对象位置不对的解决
    亲热接触Redis-第二天(Redis Sentinel)
    Java设计模式(二)-单例模式
    Android—构建安全的Androidclient请求,避免非法请求
    自己主动化測试使用mybatis更新数据库信息实例
    UML回想-通信图
    第十六课 数组的引入 【项目1-5】
    被这个样式惊醒
    netty自定义解码器
    解决netty客户端接收报文不完整的情况
  • 原文地址:https://www.cnblogs.com/suncunxu/p/10142788.html
Copyright © 2011-2022 走看看