全国服务热线:400-6136-679

位置:南京CDA数据分析师培训机构 > 学校动态 > Python类变量和实例变量

Python类变量和实例变量

来源:南京CDA数据分析师培训机构时间:2022/12/8 11:29:53

  大家好,我是Python进阶者。

  一、前言

  前几天有个粉丝问了一个关于Python类变量和实例变量的问题,这里拿出来给大家分享下,一起学习。

  这个粉丝在法国留学,所以提问是英文的,当然了英文看上去也不难,有点二级英文基础,也看得懂,实在不行,在线翻译一下也问题不大了。

二、解决过程

  这里给出【(这是月亮的背面)】大佬的解答:

  这里主要涉及到三个部分,类属性,实例属性,及实例属性的引用对象指向性问题。在该例中counter为类属性,__first为实例属性,print函数中的counter为实例属性的引用对象指向性问题。当ExampleClass类实例化时,__init__魔法函数会自动执行其下方的代码段,而下方代码段涉及到两种属性的变化,实例属性为该实例化对象特有的,即实例化完成后才会存在,每个实例化对象之间的实例属性是独立的,从你下方的print打印结果也能看出,实例对象.__dict__输出当前实例化对象的实例属性。而类属性只要定义完类,就已经存在,使用类.类属性可以引用该类属性,也可以进行修改,类属性是所有实例化对象共享的,在此例中每次实例化类后,ExampleClass.counter都会加1,在三次print中能看到输出值都是一样。

  【月神】在这里还多了一些拓展。

  在__init__中,在ExampleClass.counter += 1前添加了一行self.counter += 1;这里说明下实例属性的引用方式,在类实例化后,首先引用实例属性已有的,而如果找不到会往上寻找,即找类属性,在修改后的代码里,我为实例对象增加了一个实例属性counter,在print里的实例对象.__dict__也能看到实例属性中存在counter,而此时实例对象.counter引用到的是实例属性,而非类属性。

       这里再说一下为什么self.counter += 1能够正常执行,上述说到实例属性的引用会向上寻找,则进行+= 1计算时,会引用类属性,D一次实例化中,类属性下的counter为0,加1后赋值给实例属性下的counter,那么D一个实例对象的counter打印出来就是1,第二次实例化,在D一次实例化的过程中,类属性下counter也进行了加1,反映到第二次中,使用到的类属性counter此时已经为1,进行加1赋值给第二次实例属性的counter,即2,第三次类似。

  三、总结

  大家好,我是Python进阶者。这篇文章基于粉丝提问,针对Python类变量和实例变量的问题,给出了具体说明和演示,顺利地帮助粉丝解决了问题。

  总的来说,类变量:可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的)。实例变量:实例化之后,每个实例单独拥有的变量。

  类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/6186/news/581932/违者必究! 以上就是南京CDA数据分析师培训机构 小编为您整理 Python类变量和实例变量的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6136-679