面向对象:
如今主流的软件开发思想有两种:一个是面向过程,另一个是面向对象。面向过程出现得较早,典型代表为C语言,开发中小型项目的效率很高,但是很难适用于如今主流的大中型项目开发场景。面向对象则出现得更晚一些,典型代表为Java或C++等语言,更加适合用于大型开发场景。两种开发思想各有长短。
对于面向过程的思想: 需要实现一个功能的时候,看重的是开发的步骤和过程,每一个步骤都需要自己亲力亲为,需要自己编写代码(自己来做)
对于面向对象的思想:当需要实现一个功能的时候,看重的并不是过程和步骤,而是关心谁帮我做这件事(偷懒,找人帮我做)
面向对象的三大特征有:封装性、继承性、多态性。
面向对象和面向过程都是解决问题的一种思路而已
面向对象编程的2个非常重要的概念:
类和对象
对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类 类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象
1. 类
人以类聚 物以群分。 具有相似内部状态和运动规律的实体的集合(或统称为抽象)。 具有相同属性和行为事物的统称
类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。 一个类可以找到多个对象
2. 对象
某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。 可以是直接使用的
3.类的构成
类(Class) 由3个部分构成
01). 类的名称:类名
02). 类的属性:一组数据
03). 类的方法:允许对进行操作的方法 (行为)
4.定义类
定义一个类,格式如下:
class 类名:
方法列表
demo:定义一个Hero类
# class Hero: # 经典类(旧式类)定义形式
# class Hero():
class Hero(object): # 新式类定义形式
def info(self):
print("英雄各有见,何必问出处。")
定义类时有2种形式:新式类和经典类,上面代码中的Hero为新式类,注释部分则为经典类; object 是Python 里所有类的最顶级父类; 类名 的命名规则按照"大驼峰命名法"; info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量 这个变量指向了实例对象
添加和获取对象的属性
魔法方法__init__
Python 的类里提供的,两个下划线开始,两个下划线结束的方法,就是魔法方法,__init__()就是一个魔法方法,通常用来做属性初始化 或 赋值 操作(作用)。
# 如果类面没有写__init__方法,Python会自动创建,但是不执行任何操作, # 如果为了能够在完成自己想要的功能,可以自己定义__init__方法, # 所以一个类里无论自己是否编写__init__方法 一定有__init__方法。
魔法方法:__str__()方法
在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法 当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str__(self)方法,那么就会打印从在这个方法中 return 的数据 __str__方法通常返回一个字符串,作为这个对象的描述信息
魔法方法:__del__()方法
继承介绍以及单继承
单继承:子类只继承一个父类
多继承
多继承:子类继承多个父类,
多继承可以继承多个父类,也继承了所有父类的属性和方法 注意:如果多个父类中有同名的 属性和方法,则默认使用第一个父类的属性和方法(根据类的魔法属性mro的顺序来查找) 多个父类中,不重名的属性和方法,不会有任何影响。
子类重写父类的同名属性和方法
子类调用父类同名属性和方法
调用父类方法super()
qq测试用例