python3 类中字典类型的实例变量被“篡改”
先看下面的例子
class A(object):va = ""def foo(self,str):self.va = strdef defPrint(self):print(self.va)# Script starts from here
a1 = A()
a2 = A()
a3 = A()a1.foo("hhh")
print(a1.va)
a1.defPrint()
a2.foo("ggg")
print(a1.va)
a1.defPrint()
a3.foo("123")
print(a1.va)
a1.defPrint()运行结果如我们所想
hhh
hhh
hhh
hhh
hhh
hhh
那么如果类内的变量为字典类型呢
class A(object):va = {}def foo(self,str):self.va = {"name":str}def defPrint(self):print(self.va)# Script starts from here
a1 = A()
a2 = A()
a3 = A()a1.foo("hhh")
print(a1.va)
a1.defPrint()
a2.foo("ggg")
print(a1.va)
a1.defPrint()
a3.foo("123")
print(a1.va)
a1.defPrint()也没有问题
{'name': 'hhh'}
{'name': 'hhh'}
{'name': 'hhh'}
{'name': 'hhh'}
{'name': 'hhh'}
{'name': 'hhh'}
如果改变字典的赋值方式呢,这时候最奇葩的地方来了
class A(object):va = {}def foo(self,str):self.va["name"] = str #注意这里的修改def defPrint(self):print(self.va)# Script starts from here
a1 = A()
a2 = A()
a3 = A()a1.foo("hhh")
print(a1.va)
a1.defPrint()
a2.foo("ggg")
print(a1.va)
a1.defPrint()
a3.foo("123")
print(a1.va)
a1.defPrint()运行结果很神奇的变成了
{'name': 'hhh'}
{'name': 'hhh'}
{'name': 'ggg'}
{'name': 'ggg'}
{'name': '123'}
{'name': '123'}
可以看到此时的va已经变成了类变量而不是实例变量。因此会得到该结果。
仅作编程中遇到的问题的小记录,至于导致该结果的原因小弟还不是很清楚,还请dalao在评论批评指正。
python3 类中字典类型的实例变量被“篡改”相关推荐
- 第8.12节 Python类中使用__dict__定义实例变量和方法
上节介绍了使用实例的__dict__查看实例的自定义属性,其实还可以直接使用__dict__定义实例变量和实例方法. 一. 使用__dict__定义实例变量 语法: 对象名. dict[属性名] = ...
- python编程字典100例_python中字典(Dictionary)用法实例详解
本文实例讲述了python中字典(Dictionary)用法.分享给大家供大家参考.具体分析如下: 字典(Dictionary)是一种映射结构的数据类型,由无序的"键-值对"组成. ...
- 关于Python3.7和Python3.6中元组类型数据内存存储问题
关于Python3.7和Python3.6中元组类型数据内存存储问题 小编最近发现了一个瑕疵 当定义一个元组类型的变量后,若在程序后面再定义一个元组变量,这两个元组的内容相同,那么在不同的版本中会出现 ...
- ffmpeg中字典类型的描述
原创:https://blog.csdn.net/ice_ly000/article/details/90599713?spm=1001.2014.3001.5501 ffmpeg中字典类型的描述: ...
- POJO类中布尔类型属性的定义与命名
阿里Java开发手册中强制规定: 而不类型的变量名不要使用isXxx的格式.因为布尔类型属性的getter方法与其他类型的不一样,是isSuccess(),如果在变量名之前加上is的话,属性名与方法名 ...
- POJO 类中布尔类型为啥不让用 isXxx 命名
一.代码问题重现 想要使用json串在服务间传递信息时,我们会先定义一个POJO类,该类中包含是否删除属性isDeleted,代码如下 /** * @author wenxuan wang */ @D ...
- python中字典类型中的item是什么-python中 字典类型内置方法
python中 字典类型内置方法 一.字典(dict) 1·. 存多个值,但是每一个值都有一个key与之对应.列如存在值有姓名:jiayi.年龄:18.身高:173 2.定义方式 在{}内 ...
- python类中包含一个特殊的变量、它表示当前对象自身_知到APP教师职场礼仪第七单元章节测试网课答案大学课后答案...
[判断题]水参与了植物体内众多的生物化学反应. [单选题]所有参加保险的人为自己办理保险而合作成立法人组织的相互保险组织是( ). A. 相互保险公司 B. 相互保险社 C. 保险合作社 D. 保险合 ...
- python类中包含一个特殊的变量、它可以访问类的成员_区域联防的运用中遵循并贯彻以球为主的防守原则,做到球人区三者兼顾。( )...
刘墉书法的特点是用墨厚重,体丰骨劲,浑厚敦实,别具面目.A:对B:错 Python类中包含一个特殊的变量(),它表示当前对象自身,可以访问类的成员.A:meB:selfC:thisD:与类同名 在过火 ...
最新文章
- 保存Java程序状态及设置Properties文件
- SmartFoxServer 2X 笔记一:login request (转)
- BufferedReader 和BufferedWriter
- 敏捷宣言和企业Scrum作者Mike Beedle去世
- Quartz.net官方开发指南 第九课: JobStore
- python中进制chr_python中的chr() 如何返回字符?
- Find a way
- TensorFlow文件操作
- html:(4):认识html文件基本结构和认识head标签
- Griview中的删除按钮添加“确认提示”
- win7设置计算机共享的打印机共享的打印机共享,win7,xp打印机共享设置软件 一键共享...
- 织梦采集侠自动采集伪原创发布设置
- iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destinatio
- springboot框架直接访问静态页面
- java实战小结-Controller报错:Content type ‘multipart/form-data;boundary=----WebKitFormBoundaryxxxx not supp
- CSDN App产品分析报告
- 员工离职率预测,练手赛
- 我如何为我的第一个自由客户构建第一个React Native应用程序
- 【思考】人脸认证真的准确吗?通过身份证的人脸对比有哪些问题?
- 三重缓冲:为什么我们爱它