文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

关于python类属性和实例属性的细节有哪些

2023-06-02 00:21

关注

本篇内容主要讲解“关于python类属性和实例属性的细节有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“关于python类属性和实例属性的细节有哪些”吧!

关于python类属性和实例属性,简单来说,类属性就是在定义类的时候,和类方法同一级别定义的属性;实例属性是在__init__实例初始化时候定义属性。

单纯从实例的角度来看,类属性和实例属性都可以在实例中用self.属性名称的方法进行访问更新,相对于在实例方法中的局部属性,可以进行实例全局该属性修改,很多时候甚至都混用了。

其实类属性还可以直接用类名.类属性名称方法直接访问,即时没有实例化。这个就是不要的类不要import,也会占用内存空间,即便那个类没有实例化。同时这个类属性方法的内存空间是所有实例化对象共享的,理论上实例对象A更新了类属性,B中这个属性也会更新,某个方面就实现跨实例的全局变量,可以用作实例直接交互。

这里有一些细节点要注意的,就是如果类属性是int,string,float,tuple这样不可变类型,那边其实每个实例更改的时候,就会新建一个,并不会修改原来的,这些类型的类属性就是和实例属性一个样;而可变类型dict set list,还有实例对象;这些就真正全局更新,只有一个类的实例对象修改,所有该类的实例对象都会改变。

最后还有一点,很容易忽视的,就是如果使用python Multiprocessing多线程处理的时候,不要尝试用这些类属性进行通信,因为可能一个实例在读,另一个已经修改了。还是用queue,这个是线程安全的。

下面代码示例说明。

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 = 8A.StringItem = 'Test2'A.listItem.insert(-1,5)A.Dict[3] = 9A.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))

到此,相信大家对“关于python类属性和实例属性的细节有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯