取精华,去糟粕;重基础,促创新
一.编程范式
面向过程:根据业务逻辑从上到下写垒代码
函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
面向对象:对函数进行分类和封装,让开发“更快更好更强…”
二.面向对象
面向对象不像面向过程那样按照功能划分模块,它所关注的是软件系统有哪些参与者,把这些参与者称为对象,找出这些软件系统的参与者也就是对象之后,分析这些对象有哪些特征、哪些行为,以及对象之间的关系,所以说面向对象的开发核心是对象
三.类和对象
1.面向对象编程的2个非常重要的概念:类和对象
类是对象的类型,具有相同属性和行为事物的统称。类是抽象的,在使用的时候通常会找到这个类的一个具体存在。
2.类是对象的类型,对象是类的实例。类是抽象的概念,而对象是一个你能够摸得着,看得到的实体。二者相辅相成,谁也离不开谁。
四.类的构成
类的名称:类型
属性:对象的属性
方法:对象的方法
五.创建和使用类
1.类定义:
class类名:
属性列表
方法列表
示例如下:
2.类的属性分类:
类属性
实例属性
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。如果需要用在类的方法中,使用类名.类属性.
实例变量:定义在方法中的变量,只作用于当前实例的类。
3.类的属性的操作方法
(1)可以使用点实例化对象名+.来访问对象的属性
(2)也可以使用以下函数的方式来访问属性
getattr(obj,name[, default]) : 访问对象的属性
hasattr(obj,name) : 检查是否存在一个属性
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会实例化对象中创建一个新属性
delattr(obj,name) : 删除属性(类名和实例化对象都无法访问)
注意:name需要加单引号,obj为实例化对象名称
4.内置属性
Python内置类属性
__dict__ : 类的属性(包含一个字典,由类的属性名:值组成) 实例化类名.__dict__
__doc__ :类的文档字符串 (类名.)实例化类名.__doc__
__name__: 类名,实现方式 类名.__name__
__bases__ : 类的所有父类构成元素(包含了以个由所有父类组成的元组)
5.__init__()构造方法和self
__init__()是一个特殊的方法属于类的专有方法,被称为类的构造函数或初始化方法,方法的前面和后面都有两个下划线。
这是为了避免Python默认方法和普通方法发生名称的冲突。每当创建类的实例化对象的时候,__init__()方法都会默认被运行。作用就是初始化已实例化后的对象。
在方法定义中,第一个参数self是必不可少的。类的方法和普通的函数的区别就是self,self并不是Python的关键字,你完全可以用其他单词取代他,只是按照惯例和标准的规定,推荐使用self。
6.__name__
__name__:如果是放在Modules模块中,就表示是模块的名字;
如果是放在class类中,就表示类的名字;
__main__:模块,xxx.py文件本身,被直接执行时,对应的模块名就是__main__了
可以在if __name__== “__main__”:
中添加你自己想要的,用于测试模块,演示模块用法等代码。
作为模块,被别的Python程序导入(import)时,模块名就是本身文件名xxx了。
7.小结
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类属性:类变量在整个实例化的对象中是公用的。类属性定义在类中且在函数体之外。类属性通常不作为实例变量使用。
实例属性:定义在方法中的,只作用于当前实例的类。
数据成员:类属性或者实例属性(方法中的变量)用于处理类及其实例对象的相关的数据。
方法:类中定义的函数。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。(后面讲继承的时候介绍)
实例化对象:创建一个类的实例,类的具体对象。