1.抽象
将现实世界实体总结归纳成属性和方法到计算机世界变成类的过程。(即抽象的结果是类)
1.1.类
类是对象的模型,对象的抽象。它定义了一组属性(称为成员变量)和方法(称为成员函数),是属性方法的集合,对象是根据这些定义创建的。
(1)实例属性
实例属性(也称为对象属性)是指属于一个类的实例的变量。在面向对象编程中,每个实例都可以拥有自己的属性值,这些属性值可以存储与该实例相关的数据。对象属性是对象状态的组成部分,它们定义了对象的特征和行为。并且对象拥有的只能对象访问。
(2)对象方法
实例方法(也称为对象方法)是定义在类中,并且与类的实例相关联的特殊函数。这些方法操作对象的状态,并且可以通过对象实例来调用,且对象拥有的只能对象调用。对象方法至少有一个参数,通常称为self,它代表调用该方法的对象实例。
(3)类属性
类里唯一的,对象公共访问,只能通过类直接修改。
(4)类方法
不需要创建对象,类里唯一的,类直接调用,无默认形参,对象可以调用。
(5)静态方法
不需要创建对象,类里唯一,类可以直接调用,无默认形参,对象也可以直接调用。
(6)抽象方法
抽象方法是一种特殊类型的方法,它只有方法的声明而没有具体的实现。抽象方法不能被直接调用。约束子类必须提供重写该方法,否则会报错。
1.2.构造函数
构造函数__init__+__new__是类里特殊的方法,只在创建对象时调用,无返回值,作用是快速初始化属性(__init__),创建返回对象(__new__)
2.封装
是设置访问级别(__name私有,只能在类内部访问;_name受保护,只有在类内部和继承类中访问;name公开,类的内部外部公共访问)作用是增加数据的安全性。
形式一:age=property(get_age,set_age)
形式二:prop/props
3.继承
在原有类的基础上创建新类的机制,被继承的类称为父类(基类或者超类),继承的类称为子类(派生类),一般到特殊使用继承关系表示。优点是重用、扩展、维护。
3.1.继承的原则
(1)子类只能继承父类非私有成员
(2)子类不能继承父类的构造可以访问,可以继承析构函数
(3)子类不能修改父类的成员,可以在子类里重写成员
(4)子类可以扩展新的成员
(5)任何类都直接或间接继承自object
3.2.多继承
继承类中出现重名方法,直接使用类名调用方法,传入对象。出现多级以及复杂的继承中,可以使用mro分析方法的解析顺序。
3.3.类型判断
isinstance()判断对象是否是某个类的实例
Issubclass()判断类是否是某个类的子类
3.4.重写object
_ _ class _ _ 获得类型
_ _ doc _ _ 获得注释
_ _ module _ _ 获得模块名信息
_ _ dict _ _ 获得对象的属性信息,返回字典
_ _ dir _ _() 获得对象的全部成员名,返回列表
_ _ hash _ _ () 获得对象的hash值
_ _ sizeof _ _ () 获得对象占用内存的字节数
_ _ str _ _ () 对象的字符串形式
_ _ eq _ _ () ==
_ _ ne _ _ () !=
_ _ gt _ _ () >
_ _ lt _ _ () <
_ _ ge _ _ () >=
_ _ le _ _ () <=
_ _ add _ _ () +
_ _ sub _ _ () -
_ _ mul _ _ () *
_ _ truediv _ _ () /
_ _ mod _ _ () %
_ _ floordiv _ _ () //
_ _ pow _ _ () **
_ _ call _ _ () 将对象作为函数调用
_ _ enter_ _ () with 结构使用的进入函数
_ _ exit _ _ () with 结构使用的结束函数
4.多态
对象在不同的情况下,具有多种形态,python中处处多态,属于运行时多态。python的多态体现在类的多态,类的多态体现在方法的多态,方法的多态体现在继承关系中的重写,增加程序的扩展性。