python中属性定义及注意点

一、类的属性

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、静态属性和实例属性的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_36581372

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值