python 类创建-相关的基础概念(一)
1、什么是类 class
【1】拥有相同属性和行为的对象分为一组,即为一个类
【2】类是用来描述对象的工具,用类可以创建此类的对象(实例)
【3】类用于描述对象的行为和属性
【4】类用于创建此类的一个或多个对象(实例)
2、创建类
class 语句
class 类名(继承列表):#继承列表指的是从哪些类继承的,即此类的基类有哪些
'类的文档字符串'
实例方法的定义
类变量的定义
类方法的定义(@classmethod)
静态方法的定义(@staticmethod)
注意:
【1】类名必须为标识符
【2】类名实质上就是变量, 它绑定一个类
3、类的文档字符串
【1】类内第一个没有赋值给任何变量的字符串为类的文档字符串
【2】类的文档字符串可以用类的 __doc__属性访问
4、类的实例的创建 (构造函数创建)
变量名(实例)= 类名() #用类名创建一个实例对象用变量绑定
【1】 实例有自己的作用域和名字空间,可以为该类的对象添加实例变量(也叫属性)
【2】 实例可以调用类方法和实例方法
【3】 实例可以访问类变量和实例变量
5、类变量
类变量是类的属性,此属性属于类,不属于此类的实例
作用: 通常用来存储该类创建的对象的共有属性
注:
【1】类变量可以通过该类直接访问
【2】类变量可以通过类的实例直接访问
【3】类变量可以通过此类的对象的__class__属性间接访问
6、【实例方法】
用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为
【1】 实例方法实质是函数,是定义在类内的函数
【2】 实例方法至少有一个形参有,第一个形参代表调用这个方法的实例,一般命名为 'self'
【实例方法调用】
【1】实例.实例方法名(调用传参) #调用传参,调用实例方法需要传递的参数
【2】类名.实例方法名(实例,调用传参)
class 类名(继承列表):
def 实例方法名(self, 参数1, 参数2, ...):
'文档字符串'
pass
7、【实例属性】
每个实例对象可以有自己的变量,称为实例变量(也叫属性)
【作用】记录每个对象自身的数据
实例.属性名 = xxx
赋值规则:在类的外部创建或者实例方法内
【1】首次为属性赋值则创建此属性
【2】再次为属性赋值则修改属性的绑定关系
8、【初始化方法】
对新创建的对象添加属性
【1】 初始化方法名必须为 '__init__' 不可改变
【2】 初始化方法会在构造函数创建实例后自动调用,且将实例自身通过第一个参数self 传入 __init__ 方法
#构造函数:类名()
【3】 构造函数的实参将通过__init__方法的参数列表传入到 '__init__' 方法中
【4】 初始化方法内如果需要return 语句返回,则只能返回None
class 类名(继承列表):
def __init__(self [, 形参列表]): # [] 表示其可以省略
pass
9、【析构方法】
析构方法在对象被销毁时被自动调用 python建议不要在对象销毁时做任何事情,因为销毁的时间难以确定
class 类名:
def __del__(self):
pass
10、类方法@classmethod
类方法是用于描述类的行为的方法,类方法属于类,不属于类的实例
说明:
类方法需要使用@classmethod装饰器定义
类方法至少有一个形参,第一个形参用于绑定类,约定写为'cls'
类和该类的实例都可以调用类方法
类方法不能访问此类创建的实例的属性
11、静态方法 @staticmethod
静态方法是定义在类内部的函数,此函数的作用域是类的内部
说明:
静态方法需要使用 @staticmethod装饰器定义
静态方法与普通函数定义相同,不需要传入self实例参数和cls参数
静态方法只能凭借该类或类创建的实例调用
静态方法不能访问类变量和实例变量(属性)
12、实例方法, 类方法, 静态方法, 函数
不想访问 类内 和 实例内 的变量,用静态方法
只想访问类内变量,不想访问实例变量,用类方法
既要访问内变量,也想访问实例变量用实例方法
函数与静态方法相同,只是静态方式的作用域定义在类内