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

it2024-12-25  16

类(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__方法        

转载于:https://www.cnblogs.com/sun-ming-ji/p/9392400.html

相关资源:数据结构—成绩单生成器
最新回复(0)