1、编程范式
在程序开发的过程中,每一个程序员都会有自己的编程风格,根据这些不同的编程风格,进行归纳总结,得到了几种典型的编程风格,这就是编程范式,分为面向对象编程、面向过程编程、函数式编程
2、面向过程编程
面向过程是一种以“过程”为中心的编程思想,以什么正在发生为主要目标进行编程。将一个大问题,分解成若干个小问题,再针对小问题,进行分解,直到小问题足够小,能够解决为止。然后用函数一步一步实现,使用的时候一个一个依次调用就可以实现
优点:复杂的问题简单化
缺点:可扩展性差
3、面向对象编程
面向对象(OOP)是一种以“对象”为中心的编程思想,一切皆对象。将现实的事物都进行抽象化成模型,模型用来反映现实事物的特征。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。
优点:可扩展性强
缺点:编程的复杂度高于面向过程
特性:
- Encapsulation 封装:功能实现细节不对外暴露,在类中对数据赋值,内部调用对外部用户不可见
- Inheritance 继承:一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承(代码重用)
- Polymorphism 多态:每个类在继承了同样的方法名同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态。一个接口,多个实现(接口重用)
Class 类:
一个类即对一类拥有相同对象的抽象、蓝图、原型
在类中定义这些对象都有的属性和方法
Object 对象:
一个对象即是一个类的实例化,一个类可以实例化的多个对象,每个对象可以有不同的属性,如人指类,每个人为对象,人与人之间有共同点,也有不同点
类的实例化:
- _ _ init _ _()是构造函数,在实例化的时候做一些类的初始化工作
- 类有自己单独的内存空间,存储自己的属性和方法,在实例化对象的时候,会新开辟一块空间给这个对象,只会copy基本属性到这块内存区域, 不copy方法
析构函数:
在实例释放时、销毁时自动执行,通过做一些收尾的工作,如关闭数据库连接、关闭临时文件
# Author: Mr.Xue
# 2019.10.29
def __del__(self):
pass
del r1 # 执行析构函数,r1代表类对象
类变量和实例变量:
-
类变量是大家共用的属性,目的是为了节省内存空间
-
私有属性(变量)和私有方法:在变量名/方法名前面"_ _"
-
实例变量是定义声明在__init__方法中的
-
如果类变量和实例变量相同时,实例化对象先找实例本身的
-
实例对象r1改变了类变量,原理上是对象r1在自己的内存里创建了一个新的变量,如果有一个新的实例r2在r1改变了类变量的值后再去调用类变量,类变量的值没有发生变化
class role: n = 123 # 类变量 def __init__(self, name): self.name = name # 实例变量(静态属性),作用域就是实例本身 def func(): # 类的方法、功能(动态属性) pass