老师,类属性和实例属性

老师,类属性和实例属性

什么是类属性,什么是实例属性呢?

它们的区别又是什么呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!

类属性(类变量):类中,所有函数之外:此范围定义的变量,称为类属性或类变量;

1、类属性属于类所有,所有实例对象共享一个属性,当通过类名将类属性改变后,所有的实例对象的类属性也会改变,即类属性在所有实例化对象中是作为公用资源存在的,如下图:

https://img1.sycdn.imooc.com//climg/6184f0e8090ef81405300569.jpg

2、类属性的调用方法有 2 种,既可以使用类名直接调用,也可以使用类的实例化对象调用。

3、当类中变量引用的是可变对象时(如:列表),类属性和实例属性都能直接修改这个对象,从而影响其他实例对象的值,如下图:

https://img1.sycdn.imooc.com//climg/6184f162092a764d06130555.jpg

实例属性(实例变量):类体中,所有函数内部:以“self.变量名”的方式定义的变量,称为实例属性或实例变量;

1、实例属性属于各个实例所有,互不干扰;

https://img1.sycdn.imooc.com//climg/6184f217098b0cc705730666.jpg

2、实例变量只能通过实例化对象访问,无法通过类名访问。

在视频中定义实例属性的时候会删掉类属性,是因为最好不要实例属性和类属性使用相同的名字,相同名称的实例属性将屏蔽掉类属性,祝学习愉快~


  • 呆呆桃 提问者 #1

    谢谢老师详细解答。还有几个小问题:

    1. 回答中最后一条‘在视频中定义类变量的时候会删掉类属性’,类属性不是=类变量吗,所以不是很明白这句话。这个具体是哪个视频呢?

    2. 在2-1视频中,说‘类函数中定义的变量叫类变量’,这不是叫实例变量吗?

    3. 回答中提到:‘所有函数内部:以“self.变量名”的方式定义的变量,称为实例属性或实例变量’,如果在函数内部没有以self命名的变量,也叫实体变量吗?



    2022-06-11 12:07:12
  • 好帮手慕凡 回复 提问者 呆呆桃 #2

    同学,你好!

    1、类属性是等于类变量,在视频中定义实例属性的时候会删掉类属性,是因为最好不要实例属性和类属性使用相同的名字,已修改,说的是2-6中视频;

    2、类体中,所有函数内部:以“self.变量名”的方式定义的变量,称为实例属性或实例变量;在类中,所有函数之外:此范围定义的变量,称为类属性或类变量;

    3、在类中的函数内部,没有以self命名的变量,是一个普通的局部变量,作用范围仅在此函数中

    祝学习愉快~

    2022-06-11 12:57:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师