您现在的位置是:亿华云 > IT科技
关于python类属性和实例属性的一些细节注意点
亿华云2025-10-04 03:10:01【IT科技】4人已围观
简介关于python类属性和实例属性,简单来说,类属性就是在定义类的时候,和类方法同一级别定义的属性;实例属性是在__init__实例初始化时候定义属性。单纯从实例的角度来看,
关于python类属性和实例属性,关于简单来说,类属类属性就是性和在定义类的时候,和类方法同一级别定义的实例属性属性;实例属性是在__init__实例初始化时候定义属性。
单纯从实例的节注角度来看, 类属性和实例属性都可以在实例中用self.属性名称的意点方法进行访问更新,相对于在实例方法中的关于局部属性,可以进行实例全局该属性修改,类属很多时候甚至都混用了。性和
其实类属性还可以直接用类名.类 属性名称方法直接访问,实例属性即时没有实例化。节注这个就是意点不要的类不要import,也会占用内存空间,关于即便那个类没有实例化。亿华云计算类属同时这个类属性方法的性和内存空间是所有实例化对象共享的,理论上实例对象A更新了类属性,B中这个属性也会更新,某个方面就实现跨实例的全局变量,可以用作实例直接交互。
这里有一些细节点要注意的,就是如果类属性是int,string,float,tuple这样不可变类型,那边其实每个实例更改的时候,就会新建一个,并不会修改原来的,这些类型的类属性就是和实例属性一个样;而可变类型dict set list,源码库还有实例对象;这些就真正全局更新,只有一个类的实例对象修改,所有该类的实例对象都会改变。
最后还有一点,很容易忽视的,就是如果使用python Multiprocessing多线程处理的时候,不要尝试用这些类属性进行通信,因为可能一个实例在读,另一个已经修改了。还是用queue,这个是线程安全的。
下面代码示例说明。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 class TreeNode: intItem= 5 StringItem = Test listItem = [1,2,3,4] Dict = { 1:2,2:4} def __init__(self, x): self.Intval = x self.listval= [A,B] A = TreeNode(1) B = TreeNode(2) print("TreeNode.intItem:%s, TreeNode.listItem:%s" %(TreeNode.intItem,TreeNode.listItem)) print("A:%s, B:%s" %(A.intItem, B.intItem)) print("A:%s, B:%s" %(A.StringItem, B.StringItem)) print("A:%s, B:%s" %(A.listItem, B.listItem)) print("A:%s, B:%s" %(A.Dict, B.Dict)) print("A:%s, B:%s" %(A.listval, B.listval)) A.intItem = 8 A.StringItem = Test2 A.listItem.insert(-1,5) A.Dict[3] = 9 A.listval.insert(-1,5) print("========only update A=========") print("TreeNode.intItem:%s, TreeNode.listItem:%s" %(TreeNode.intItem,TreeNode.listItem)) print("A:%s, B:%s" %(A.intItem, B.intItem)) print("A:%s, B:%s" %(A.StringItem, B.StringItem)) print("A:%s, B:%s" %(A.listItem, B.listItem)) print("A:%s, B:%s" %(A.Dict, B.Dict)) print("A:%s, B:%s" %(A.listval, B.listval))很赞哦!(9)
相关文章
- 2、定期提交和投标域名注册。例如,益华网络点击“立即预订”后,平台会抢先为客户注册域名。当然,一个域名可能会被多个客户预订,所以出价最高的人中标。
- 一篇带你了解什么是分布式ID
- Linkerd 2.10(Step by Step)之使用 Linkerd 进行分布式跟踪
- 超实用:Vue 自定义指令合集
- 在更换域名后,并不是就万事大吉了,我们需要将旧域名做301重定向到新域名上,转移旧域名的权重到新域名上。
- 如何动态导入ECMAScript模块?
- 超实用:Vue 自定义指令合集
- 手把手教你使用Python轻松打造淘宝主图视频生成神器
- 3.dns修改成功后,点击“域名解析”,按提示进行操作。解析格式一般如下:
- 7 个关于 this 面试题,你能回答上来吗?