总结
1.类和对象的定义
-
类:用来描述具有相同的属性和方法的对象的集合;
-
对象:通过类定义的数据结构实例;
-
简单来说就是在python中,用属性表示特征,用方法表示技能,因而具有相同特征和技能的一类事物就是‘类’,对象是则是这一类事物中具体的一个;
2.实例的定义
- 类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的属性可能不同;
3.什么是实例化
-
类名加括号就是实例化,实例化会自动调用init()方法,可以用它来为每个实例定制自己的特征;
-
init()
方法被称为类的构造函数或初始化方法,需要注意的是__init__()
方法不能有return返回值;
4.类变量和实例变量
-
类变量:类变量在整个实例化的对象中是公用的,也就是定义在类中且在函数体之外的变量(类变量通常不作为实例变量使用);
-
实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,是定义在类里面的方法中的变量;
5.类方法
-
使用装饰器
@classmethod
,第一个参数必须是当前类对象,该参数名一般约定为"cls"
,通过它来传递类的属性和方法(不能传实例的属性和方法); -
可以被实例对象和类对象调用;
6.实例方法
-
第一个参数必须是实例对象,该参数名一般约定为"self",通过它来传递实例的属性和方法(也可以传类的属性和方法);
-
只能由实例对象调用;
7.静态方法
-
使用装饰器
@staticmethod
,参数随意,没有"self"
和"cls"
参数,但是方法体中不能使用类或实例的任何属性和方法; -
可以被实例对象和类对象调用;
8.私有属性和保护属性
-
两个下划线开头的属性为私有属性,不能在类的外部被使用或直接访问;
-
一个下划线开头的属性为保护属性,只有类实例和子类实例能访问,需通过类提供的接口进行访问;
9.属性装饰器
-
第一种写法:使用
@property
装饰器,将类的方法变为属性属性; -
第二种写法:使用属性函数
property()
,直接把方法当属性来操作; -
一个property对象包含三个方法:
getter
,setter
,deleter
,当一个函数被@property
装饰器修饰时,系统会自动创建一个包含对应访问函数的同名属性;