面象对象三大特征:封装、继承、多态
对象object:个体
类class:所有具备相同特征的个体的集合
class类名:
封装内容:
1、特征描述-属性:用数据描述,作用是存储数据的(变量)
2、功能(能做的事)-方法/函数
属性、方法是类的成员
方法分类:
1、实例方法:必须第一个参数是用来描述类的实例。默认取名为self,可以自定义(创建完成之后,通过对象来调用实例方法)
2、析构方法:名字只能是__init__(),作用是创建类对象进行初始化的
3、析构方法:名字只能是__del__(self),作用是销毁或删除对象时回收、释放资源
4、静态方法:@staticmethod
调用方式:类名.静态方法名()
5、类方法:@classmethod
6、私有方法
在属性或方法名的最头部用__(两个下划线)开头 不能通过 对象名.私有属性/私有方法 来引用 使用方式: 对象名._类名.私有属性名/私有方法 print(t1._test__s) 对象名._类名私有属性名/私有方法
继承:
创建父类 创建子类继承父类 继承的语法格式: class 子类名(父类名): 可以多继承 class 子类名(父类名1,父类名2,....): 多层继承 父、子、孙 创建子类对象时会先创建父类,父类的构造方法改变之后会影响子类的创建,子类必须做对应的调整
同一个名字拥有多种形态 与继承有关、必须存在继承才能有多态 class parent: def a(): print(“这是父类的a方法”) class son(parent): def a():#重写:子类保持父类方法的名称一样,但是功能代码改变了 print(“这是子类的a方法”) 扩充/扩展 其他语言多态: 重载:同一个类的内部,可以存在多个相同的方法名,但是方法所带的参数的个数或者类型必须不一样 重写:与python相同 (在不同的类中,且是子父类) 抽象类: 包含了抽象方法的类 加上@abstractmethod修饰符的实例方法 写代码实现抽象类: 1、导入模块abc及abstractmethod,ABCMeta from abc import abstractmethod,ABCMeta 2、创建一个继承子ABCMeta的父类(抽象类) class parent(metaclass=ABCMeta) 3、在以上父类中封装抽象方法(在实例方法前加@abtractmethod) @abtractmethod 抽象类的使用场合: 父类只是创建方法名称,而不是实现其功能,具体的功能由子类重写来实现 多态:
|