日期:2025/04/03 21:37来源:未知 人气:54
一、类的属性
1、类属性
python 的属性分为实例属性和类属性,实例属性是以 self 为前缀的属性,如果构造函数中定义的属性没有使 用 self 作为前缀声明,则该变量只是普通的局部变量,类中其它方法定义的变量也只是局部变量,而非类的实例 属性
我们先来了解类属性(属性又称为变量)。
在前面的例子中我们已经接触到了类属性,顾名思义,类属性就是类对象所拥有的属性,它被所有类对象的 实例对象所共有,在内存中只存在一个副本,这个和 C++中类的静态成员变量有点类似。因此,类属性又称为静 态属性。而对于静态属性,在类外可以通过类名打点直接访问。我们来看以下示例:
创建学生类,并定义类属性 count,用来记录创建的学生对象数量。代码如下:
总结如下:
1) 类属性(又称静态属性或静态变量)就是给 类对象 中定义的 属性
2) 通常用来记录 与这个类相关 的特征
3) 类属性 不会用于记录 具体对象的特征() 4) 类属性 可以通过类对象(即类名)打点调用,也可以通过类的实例打点调用。
2、实例属性
实例属性,顾名思义,就是类的实例的属性。如任务 1-1 中对象 stu1 的属性分别是姓名、身高和性别。实 例属性的定义有两方式:
一、实例属性是以 self 为前缀的属性,比如任务 1-1 中的 name,height,sex。
二、实例属性可以不在类中显示定义,在类外对类对象 Student 进行实例化之后,产生了一个实例对象 stu1,然 后 stu1.age = 12 这句给 stu1 添加了一个实例属性 age,赋值为 12。这个实例属性是实例对象 stu1 所特有的,注 意,类对象 Student 和实例对象 stu2,stu3 并不拥有它(所以不能通过类对象来访问这个 age 属性)。示例如下:
上述示例中,对象 stu2 访问 stu1 特有的属性时报错,但 stu1 访问并没有问题。 需要注意的是,如果需要在类外修改类属性(静态属性),必须通过类对象去引用然后进行修改。如果通过 实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果 通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属 性。
3、静态属性和实例属性的区别