【愚公系列】2021年12月 Python教学课程 19-面向对象编程-面向对象定义
【摘要】 一、 什么是面向对象编程面向对象编程:Object Oriented Programming,简称 OOP,是一种程序设计方法。OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法。Python 就是一种面向对象的语言,支持面向对象编程,在其内部,一切都被视作对象。面向对象编程出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程编程。在面向过程编程中,问题...
一、 什么是面向对象编程
面向对象编程:Object Oriented Programming,简称 OOP,是一种程序设计方法。OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法。Python 就是一种面向对象的语言,支持面向对象编程,在其内部,一切都被视作对象。
面向对象编程出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程编程。在面向过程编程中,问题被看作一系列需要完成的任务,函数用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。
示例:
'''
面向对象案例:
老张开车去东北
案例分析:
对象有:人
交通工具
地点
'''
#定义人的对象
class Person:
#初始化人的属性
def __init__(self,name,card):
self.name = name
self.card = card
#定义人使用交通工具的方法
def drive(self,tool,place):
if self.card:
tool.driving()
print("{}开{}去{}".format(self.name,tool.name,place.name))
else:
print("北京第三安全局提醒您:道路千万条,安全第一条,行车不规范,亲人两行泪")
#定义交通工具的对象
class Traffic_Tools:
#初始化交通工具的属性
def __init__(self,name,color):
self.name = name
self.color = color
#定义交通工具的启动方法
def driving():
print("{}已经启动".format(self.name))
#定义地点的对象
class Place:
#初始化地点的属性
def __init__(self,name):
self.name = name
lao_zhang = Person("老张",True)
tool = Traffic_Tools("Jeep","灰色")
place = Place("东北")
lao_zhang.drive(tool,place)
总结
面向过程:根据业务逻辑从上到下写代码。
面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速地开发程序,减少了重复代码的重写过程。
比较面向对象编程和面向过程编程,可以得到面向对象编程的以下优点:
- 可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰;
- 通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度;
- 通过对对象的辨别、划分可以将软件系统分割为若干相对独立的部分,在一定程度上更便于控制软件复杂度;
- 以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统;
- 通过对象的聚合、联合可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级。
概念及术语:
- 类(Class): 用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。其中的对象被称作类的实例。
- 实例:也称对象。通过类定义的初始化方法,赋予具体的值,成为一个"有血有肉的实体"。
- 实例化:创建类的实例的过程或操作。
- 实例变量:定义在实例中的变量,只作用于当前实例。
- 类变量:类变量是所有实例公有的变量。类变量定义在类中,但在方法体之外。
- 数据成员:类变量、实例变量、方法、类方法、静态方法和属性等的统称。
- 方法:类中定义的函数。
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对父类的方法进行改写,这个过程也称 override。
- 封装:将内部实现包裹起来,对外透明,提供 api 接口进行调用的机制
- 继承:即一个派生类(derived class)继承父类(base class)的变量和方法。
- 多态:根据对象类型的不同以不同的方式进行处理。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)