一、编程思想介绍
1.编程范式
编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式,对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式。两种最重要的编程范式分别是面向过程编程和面向对象编程。
2.面向过程编程(Procedural Programming)
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。
def db_conn(): print("connecting db...") def db_backup(dbname): print("导出数据库...",dbname) print("将备份文件打包,移至相应目录...") def db_backup_test(): print("将备份文件导入测试库,看导入是否成功") def main(): db_conn() db_backup(‘my_db‘) db_backup_test() if __name__ == ‘__main__‘: main()
3.面向对象编程
OOP编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。
面向对象的几个核心特性如下:
Class 类
一个类即是对一类拥有相同属性的对象的抽象、蓝图、原型。在类中定义了这些对象的都具备的属性(variables(data))、共同的方法
Object 对象
一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,就像人类是指所有人,每个人是指具体的对象,人与人之前有共性,亦有不同
Encapsulation 封装
在类中对数据的赋值、内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法
1.类中封装了字段和方法;对象中封装了普通字段的值2.防止数据被随意修改3.使外部程序不需要关注对象内部构造,只需要通过对象对外提供的接口进行直接访问即可(方便被外部调用)
Inheritance 继承
一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承
1.通过父类,子类的方式以最小代码量实现不同角色的共同点和不同点,同时存在
Polymorphism 多态
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态。
1.接口重用2.从父类调用子类的方法
二、面向对象编程
1.创建类和对象
class是关键字,表示类;
创建对象,类名称后加括号即可;
类中第一个参数必须为self;
类中定义的函数(def)叫做方法;
class Person(object): #创建class,Person为类名 def __init__(self,name): #构造函数,初始化方法 self.Name = name def sayhi(self): #类的方法 print("my name is %s."%self.Name) def eat(self,food): print(‘%s eating %s‘%(self.Name,food)) #food属于eat类的私有属性 p = Person(‘lain‘) #Person(p,‘lain‘) #实例化后产生的对象叫做实例 p1 = Person(‘zouliang‘) p.sayhi() p.eat(‘coco‘) =================================================== Person(‘lain‘) 相当于Person(p,‘lain‘) self 是一个形式参数,当执行 p = Person(‘lain‘) 时,self 等于p 当执行 p1 = Person(‘zouliang‘)时,self 等于p2
2.面向对象的特性
封装(Encapsulation)
封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。
所以,在使用面向对象的封装特性时,需要:
- 将内容封装到某处
- 从某处调用被封装的内容
class Person(object): def __init__(self,name,args): self.Name = name self.Args = args def sayhi(self): print("my name is %s. this year is %s "%(self.Name,self.Args)) def eat(self,food): print(‘%s eating %s‘%(self.Name,food)) p = Person(‘lain‘,22) p.sayhi() ================================================== Person(‘lain‘,22)相当于将‘lain‘,22两个参数封装到p和salf实例中的name和args属性中
多态(Polymorphism)
继承(Inheritance)