问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python中类属性和实例属性的区别

发布网友 发布时间:2022-04-22 08:09

我来回答

1个回答

热心网友 时间:2022-04-06 15:24

今天一同事说踩了python的坑,
这确实是个“坑”
但是我觉得python之所以这样设计,就是明确要求写代码的人知道自己在写什么^
^
python的实例属性必须在__init__(self)
方法中定义,直接跟在类名后边定义的属性都默认是类属性(类似于c++的static变量)。
而python实例又可以灵活的随便增加属性,便出现了图片中看似诡异的现象。
---------------------------------
我们来看一下他的原代码:
你觉得输出会是什么?
结果是
model_path
分别是
"xx_model"

"oo_model"
而model_dict全都是第二次调用的结果,也就是oo_model生成的dict的值(注意,他前边有一句self.model_dict.clear()

原因是什么呢?
"坑"
就在
他是用self.xxxx
这种方式引用变量,而不是self.__class__.xxxx
(1)
self.model_path=path;
#这对self.model_path进行了赋值,python中的第一次赋值视为变量的定义!
(2)
self.xxxx这种格式的第一次赋值含义是什么呢?-->含义是:定义,也就是说定义了一个名为xxxx的实例属性。
(3)
因此m1,m2的两次调用,分别定义了对应的(不同的)self.model_path属性。
而self.model_dict,从头到尾都是
引用
它,从未进行过
赋值(重定义),所以引用的都是
类属性
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
"你是在哪看到我的照片?"怎么说英语 留恋地看着我的照片用英语怎么说? 高德iphone地图下载 苹果手机高德地图怎么下载地图 孕中期适合出游吗 哪些孕妇不适合长途旅行 孕妇坐长途车旅行的好处 孕妇出游的最佳时间 孕晚期适合出游吗 孕妇外出旅行禁忌 小米11烧wifi啥表现 福彩3D的和值怎么计算,如果和值是10,有多少注? 有什么好听的歌当手机铃声 java举例类方法与实例方法的区别 3D和值怎么算的?和值怎么算 3D和值怎么确定 伤感、流行的铃声谁知道推荐几首? 为什么惠普笔记本WIN7显卡驱动安装失败 java中类方法和实例方法的区别是什么,说通俗一点 3D和值公式怎么计算? 求超好听的伤感歌曲铃声 3D和值公式怎么计算 JAVA类中类方法和实例方法有什么区别 笔记本显卡怎么更新不了 怎么看3d和值? m495的联想笔记本电脑显卡驱动安装失败,要怎么办? 3d合值是什么? 实例方法和类方法有什么区别 3D和值怎么算 类变量和实例变量的区别是什么? 华硕的笔记本安装显卡驱动失败怎么办? 有什么伤感的歌适合做铃声 JAVA中,类的对象和实例问题。 对象本身就是类的实... 3d各类和值是? 适合做手机铃声的伤感歌曲有哪些? c#中类和对象实例是什么关系,能否解释一下,最好... 彩票3D中合值距离是什么意思? 有什么伤感的歌曲?适合做来电铃声 江苏一对95后情侣哄孩子式陪伴迷路奶奶,你对此有... 福彩3D可以买和值吗 谈谈python中类属性和类实例的属性的区别 3d和值速查表全部的1000个组合是什么? 朋友圈里的恩爱,备忘录里的体贴,哪个才是他对你... 哪些伤感歌曲的高潮版做彩铃好听? 杭州情侣大学生卖自拍和自穿内衣获刑,为生活费值... 3d和值尾是什么? 好听的伤感纯音乐铃声 张雨绮95后小男友旧照曝光,五官扁平疑似整容,前... 3d和值振幅是什么意思? 2008伤感歌曲铃声都有什么 情侣组团“下海”,为何95后会成主力?