面向过程编程
核心是过程二字,过程指的是解决问题的步骤,即先干什么后干什么,然后在干什么。
优点:复杂的问题流程化,进而简单化。
缺点:扩展性差
面向对象编程
核心是对象二字,对象是特征与技能的结合体
基于该思想编写程序就好比是在创造一个世界,你就是这个世界的上帝,是一种上帝方式的思维
优点:可扩展性强
缺点:编程的复杂度要高于面向过程
类:种类,分类,,类别
对象是特征与技能的结合体,类是一系列对象相似的特征与技能的结合体
强调:站在不同的角度,总结出来的类是截然不同
在现实世界中:先有的一个个具体存在的对象,然后随着人类文明的发展才有了分类的概念
强调:在程序中,必须先定义类,后调用类来产生对象
#在程序中
#1、先定义类
class OldboyStudent:
school='oldboy'
def choose_course(self):
print('is choosing course')
类体代码会在类定义阶段就立刻执行,会产生一个类的名称空间
类的本身其实就是一个容器/名称空间,是用来存放名字,这是类的用途之一:
# 类本质就是一个名称空间/容器,从类的名称空间中增/删/改/查名字
# python为我们提供专门访问属性(名称空间中的名字)的语法,点后的都是属性
# OldboyStudent.school #OldboyStudent.__dict__['school']#查找属性school
# OldboyStudent.x=1 #OldboyStudent.__dict__['x']=1 #增加属性x=1
# OldboyStudent.school='Oldboy' #OldboyStudent.__dict__['school']='Oldboy' #修改属性school
# del OldboyStudent.x #del OldboyStudent.__dict__['x'] #删除属性x
# print(OldboyStudent.__dict__)
# print(OldboyStudent.__dict__['school'])
# print(OldboyStudent.__dict__['choose_course'])
# OldboyStudent.__dict__['choose_course']()
#2、后调用类产生对象,调用类的过程,又称为类的实例化,实例化的结果称为类的对象/实例
stu1=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
stu2=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
stu3=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
强调:
# 类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参 参数规则,该传几个值就传几个
# OldboyStudent.choose_course(123)