Python - OOP
命令式
- Python 的命令式语言是图灵完备的 - 即理论上可以做到其它任何语言能够做到的所有事情
- 仅依靠汇编语言的 MOV 指令,就能实现图灵完备编程
- 传统的命令式语言有着无数重复性代码,虽然函数的诞生减缓了许多重复性
- 但只有函数是不够的,需要把更加抽象的概念引入计算机才能缓解 – OOP
基本概念
python
1 | class Document(): |
Concept | Desc |
---|---|
class | 一群有着相同属性和函数的对象的集合 |
object | 集合中的一个事物,由 class 生成 object |
attribute | 对象的某个静态特征 |
method | 对象的某个动态能力 |
__init__
表示构造函数,即一个对象生成时会被自动调用的函数- 属性以
__
开头,表示该属性是私有属性
常量
python
1 | class Document(): |
- 在 Python 中,用全大写来表示常量
- 在类中,使用 self.WELCOME_STR;在类外,使用 Entity.WELCOME_STR
- 成员函数、类函数、静态函数 - 在 Java 中,类函数 ≈ 静态函数
- 静态函数与类没有关联 - 第一个参数没有任何特殊性
- 成员函数的第一个参数 - self - 当前对象的引用
- 类函数的第一个参数 - cls - 类对象
- 静态函数 - @staticmethod - 装饰器
- 一般用来处理简单独立的任务
- 类函数 - @classmethod - 装饰器
- 一般用来实现不同的 init 构造函数,类似于工厂模式
继承
- 子类拥有父类的特征,同时拥有自己独特的特征
- 特征 - 类的属性和函数
python
1 | class Entity: |
- 每个类都有构造函数
- 继承类在生成对象的时候,是不会自动调用父类的构造函数 - 与 Java 不同
- 必须在 init() 函数中显式调用父类的构造函数
- 执行顺序:子类的构造函数 -> 父类的构造函数
抽象类 + 抽象函数
与 Java 一致
python
1 | from abc import ABCMeta, abstractmethod |
- 抽象类是一种特殊的类,不能实例化
- 抽象函数定义在抽象类中,子类必须重写抽象函数
- 如果子类继承了抽象类,只要没有完全实现抽象函数,那该子类也是抽象类,同样不能实例化
- 抽象函数使用 @abstractmethod 来表示
- 自上而下 - 先定义好规约
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.