目录 面向过程编程 面向对象编程:对象与对象之间的交互 类和对象 定制对象独有的特征 类与数据类型 面向过程编程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一
目录
- 面向过程编程
- 面向对象编程:对象与对象之间的交互
- 类和对象
- 定制对象独有的特征
- 类与数据类型
面向过程编程
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
优点:性能高,流程清晰
缺点:不易维护,不易复用,不易扩展,使用于小型项目
用面向过程的方法写出来的程序就像是一份蛋炒饭,先炒蛋,混合些洋葱粒,胡萝卜丝,豌豆,翻炒片刻,再把饭加入锅里,加各种调料,酱油味精什么的,蛋与饭交融在一起,充分混合,加上各种香料,香味已经渗透到饭里面。吃起来让人欲罢不能。但是,对于我这样不喜欢吃蛋的人来说就不是那么友好了。
面向对象编程:对象与对象之间的交互
面向(对着)对象bject(一辆自行车就是一个对象)编程(码代码)
优点:易维护,易复用,易扩展,系统更加灵活
缺点:异常复杂
三大特点:封装,继承,多态
用面向对象写出来的程序就像是一份盖浇饭,可以根据不同的人的喜好来烹饪,有的喜欢番茄炒蛋盖浇饭,有的喜欢青椒肉丝盖浇饭,都可以,直接把菜往饭上一堆就可以了,饭菜是相互独立的,由于菜汁是覆盖在饭的上面的,吃的时候还需搅拌搅拌,让菜汁的香味慢慢融合到饭里,没有蛋炒饭来的那么干脆。
所以蛋炒饭与盖浇饭谁也代替不了谁,它们是为不同的吃货准备的
类和对象
类:(模板/类别)划分了对象,具有相同的属性和方法的对象属于同一类(自己控制)
对象:一系列特征(属性)和技能(方法的结合体)
定义类语法
class 类名(驼峰体): school = 'oldboy' #定义变量(给类添加属性) def choose_course(self):#定义在类内部的函数一般称为方法(给类添加技能) pass
class Student: """注释:学生类""" school = 'oldboy' #定义变量(给类添加属性) def choose_course(self):#定义在类内部的函数一般称为方法(给类增加技能)
# stu_dict = Student.__dict__ # 获取类的所有属性和方法 # print(stu_dict) # print(stu_dict['school']) # 获取学校 # stu_dict['choose_course'](123) # print(Student.__doc__)
函数定义阶段:检测语法,不执行代码
类定义阶段:执行代码
- 由类创建一个具体的对象,称为实例化一个对象
print('stu1:', stu1) print(stu1.school) print(id(stu1.school)) stu1.choose_course() # 对象使用类中的方法时,不需要加参数,因为实例化对象调用该方法时,python会自动将该实例化对象传给self
定制对象独有的特征
对象本质类似于类,也是一个名称空间,但是对象的名称空间存放对象独有的名字,而类中存放的是对象们共有的名字。因此我们可以直接为对象单独定制名字。
def init(obj, name, height, weight): obj.name = name obj.weight = weight obj.height = height stu1 = Student() init(stu1, 'yutong', '170', '140') # init是你用来给对象添加独有特征的函数 print(stu1.name) print(stu1.weight) print(stu1.height)
类与数据类型
python中一切皆对象,一切皆数据类型 作为对象 1. 引用 x = 10 ; y = x 2. 作为容器类元素 lis = [x,func,Student] 3. 作为函数参数 def func(x, func, Student) 4. 作为函数返回值 return x,func,Student