一、类(上)
1.1类与对象
类的概念
我们可以把类想成一个Python类型,像1、2、3、4这些我们归为数字,“你好”、“hello”这些我们归为字符串,对一类东西的概括/抽象我们就叫做类。
举例:
可以看到,终端显示的结果为:<class 'int'>、<class 'str'>。class 在英文中是“类别”的意思,在编程中就代表类。
这就表明它们虽各自值不同,但都分别属于整数(int)类、字符串(str)类。
对象的概念
刚刚说到,类是对一类事物的概括/抽象。那么反过来,这类东西里每一个单独的个体就属于对象。
类的作用
众所周知,每款汽车都有各自的设计蓝图。这个设计蓝图比到编程呢各种就像是类,它决定了这类型/款式/型号的汽车应该有什么一致的特征,并以此为生产标准规范。
而对象就像根据设计图生产出来的汽车,类的作用主要作为模板来使用。
Python中类能实例化产生对象
这里实例化的意思是:根据类产生一个实际的对象。
类的结构
语法结构:
从语法上来说:类的定义是一个class语句,class语句内包含了四个要素:
1.关键字“class”
2.类名
3.英文冒号“:”
4.代码块(即类里面的代码内容)
其中,规范要求类名的首字母应是大写。与if条件判断语句一样,代码块前方要注意缩进。
类的属性和方法
从汽车蓝图的角度 除法,我们可以从两个方面来描述一辆车:
一、汽车的状态怎样?包括汽车的颜色、大小等;
二、它能做什么?如:向前开(drive)、刹车(stop)、漂移(skr);
如以下代码:像color、shape这些在类中被定义的变量,就是类 Cars 中构造的属性。
定义语法也很简单,直接在类中对一个变量赋值就好了。
在类中被定义的函数就是类的方法,所以要理解清楚类的方法,需要先学习一个新知识:函数
二、函数
函数是组织好的,可以重复使用,用来实现某一功能的代码。
2.1 函数的定义
def 函数名(参数):
代码块
return 参数
- def:在英文中是 define(定义)的简写,用于定义函数。
- 函数名:由我们对其命名,需要遵守一定的命名规则规范
- 参数:函数要接收并对其进行处理的数据。(它在括号内的数量是不一定的,可以是任意数量,包括0个)
- 代码块:函数内的代码内容,用于实现函数功能。当使用函数时,就会执行代码块内的内容。
- return语句:从函数内部返回一个结果到外部(可以不写,默认返回None)
2.2 函数的执行流程
1.创建函数名
2.执行其他代码,直到调用函数
3.调用函数以后执行函数内部的代码块
2.3 参数
简单来讲,参数就是给函数使用的数据。
在括号中填入值后调用参数,该参数就获得了这个值。然后再传递到函数内部,进行了代码块中的操作。
在定义函数时,设置多个参数要用逗号隔开不同的参数,如:函数名(参数,参数....)。
-
位置参数
位置参数是按照括号里的位置顺序进行对应参数的传递。
-
默认参数
在定义函数时,我们可以对参数设置默认值,这种参数称为默认参数。
要注意,默认参数的位置必须要在位置参数后面。
如上面的代码所示,在这里,'标准'会被作为默认值传递给 size,这里的参数 size 就被称作默认参数 。
参数的传递过程如下图所示:
-
return语句
return语句是从函数内部返回一个结果到外部(可以不写,默认返回None)
这个返回结果的过程就叫返回一个值。
值的传递过程是这样的:
三、类(下)
3.1 类的方法定义语法
事实上就是在定义类的时候,在类内部的代码块再定义一个函数。
这里多了一个self参数,它用来指对象本身。
固定格式 :一般在类中定义方法第一个参数都是self参数
3.2 类的实例化(上)
实例化即根据类生成一个实际的对象:
class 语句执行后创建的类,是一个比较抽象的东西,只是一个模板。
要使用类里面的属性和方法,是需要先把类具体化,这个过程就叫做类的实例化。
把一个抽象的类具体化成一个东西,这个东西就是一个对象。有了对象我们就能通过对象去调用属性和方法。
类的实例化语法:
# 定义一个类 Cars
class Cars:
# 属性(外形构造)
color = '黑'
shape = '小'
# 初始化方法
def __init__(self):
print('实例化成功,恭喜你造出一辆新车')
# 方法 (动力、操作系统)
def drive(self):
print('一辆黑色的小汽车快速向前开')
def stop(self):
print('一辆黑色的小汽车快速停车')
def skr(self):
print('一辆黑色的小汽车快速漂移')
# 实例化类 Cars,并命名为 new_car
new_car = Cars()
3.3 类的属性、方法调用
调用类的属性语法格式如下:
类的方法调用语法:
调用类的方法时,我们一般直接忽略第一个self参数。
其它参数值按位置传递入类的方法,如下图所示:
类的方法与函数的定义及调用语法的区别:
值的传递过程:
1、首先类的方法参数由外部调用时传入:
2、加上self.前缀的变量调用了类的属性:
3.4__init__()方法
__init__()方法也叫初始化方法,类在实例化时,__init__()方法会自动运行内部的代码。要注意的是:__init__()方法前后是两条下划线。
3.5类的实例化(下)
在__init__() 方法内有设置参数时,实例化时也需要传入参数值。
位置参数会如函数时一样按顺序传递到方法中,语法格式如下:
忽略__init__() 方法中的self参数,这里有两个参数需要我们传入(color、shape),所以我们调用类用的代码是:car = Cars('红', '小'),它的传递过程如下:
值传递到代码块内并赋值给类的属性 color、shape。
注意,在类的方法内表示类的属性或类的其它方法时,要采用 self.属性名 或 self.方法名 的格式来调用。