Python面向对象程序设计
什么是面向对象程序设计
读者肯定听过 Python 中“一切皆对象”的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面向对象的含义。
面向过程VS面向对象
面向过程程序设计范型的主要特征是,程序由过程定义和过程调用组成(简单的说,过程就是程序执行某项操作的一段代码,函数是最常用的过程)
- 导入各种外部库
- 设计各种全局变量
- 写一个函数完成某个功能
- 写一个函数完成某个功能
- 写一个函数完成某个功能
- …
- 写一个main函数作为程序入口
面向对象的程序的基本元素是对象,其主要结构特点是:第一,程序一般由类的定义和类的使用两部分组成;第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动相关方法完成相应的操作。
- 导入各种外部库
- 设计各种全局变量
- 决定你要的类
- 给每个类提供完整的一组操作
- 明确地使用继承来表现不同类之间的共同点
- 根据需要,决定是否写一个main函数作为程序入口
面向对象程序设计的基本概念
类(Class)是用来描述具有相同属性(Attribute)和方法(Method)对象的集合。对象(Object)是类(Class)的具体实例。
比如学生都有名字和分数,他们有着共同的属性。这时我们就可以设计一个学生类, 用于记录学生的名字和分数,并自定义方法打印出他们的名字和方法。
属性(Attribute): 类里面用于描述所有对象共同特征的变量或数据。比如学生的名字和分数。
方法(Method): 类里面的函数,用来区别类外面的函数, 用来实现某些功能。比如打印出学生的名字和分数
初识面向对象
python中一切皆为对象,类型的本质就是类,所以,不管你信不信,你已经使用了很长时间的类了
>>> dict #类型dict就是类dict
<class 'dict'>
>>> d=dict(name='abc') #实例化
>>> d.pop('name') #向d发一条消息,执行d的方法pop
'abc'
从上面的例子来看,字典就是一类数据结构,我一说字典你就知道是那个用{}表示,里面由k-v键值对的东西,它还具有一些增删改查的方法。但是我一说字典你能知道字典里具体存了哪些内容么?不能,所以我们说对于一个类来说,它具有相同的特征属性和方法。
而具体的{‘name’:‘eva’}这个字典,它是一个字典,可以使用字典的所有方法,并且里面有了具体的值,它就是字典的一个对象。对象就是已经实实在在存在的某一个具体的个体。
创建对象
要创建一个类我们需要使用关键词class. 比如我们定义一个学生类Student应该是这样的:
# 创建一个学生类
class Student:
# 定义学生属性,初始化方法
def __init__(self, name, score):
self.name = name
self.score = score
# 定义打印学生信息的方法
def show(self):
print("Name: {}. Score: {}".format(self.name, self.score))
要创建具体的学生对象(Object),我们还需要输入:
student1 = Student("John", 100)
student2 = Student(