位置: 编程技术 - 正文

python中类变量与成员变量的使用注意点总结(python的类变量和成员变量)

编辑:rootadmin

推荐整理分享python中类变量与成员变量的使用注意点总结(python的类变量和成员变量),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python中的类变量,python的类变量和成员变量,python中的类变量,python类变量与字典,python中的类变量,python类变量与字典,python类变量与字典,python 类变量和类方法,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

最近在用python写一个项目,发现一个很恶心的bug,就是同由一个类生成的两个实例之间的数据竟然会相互影响,这让我非常不解。后来联想到java的类有类变量也有实例变量,因此翻阅了相关资料,发现python也有类似的类变量和实例变量,下面来看看详细的介绍。

看下面的示例代码:

x就是类变量,y就是实例变量。

python中类变量与成员变量的使用注意点总结(python的类变量和成员变量)

原则上是没有错的,但是实际用的时候就发现一些恶心的问题(也就是我找了三天的bug)。。。比如下面的代码:

这里很明显x和y都是类变量,add的作用是分别对x和y做出修改。然后构造一个实例a,对实例a的值进行修改,最后构造实例b。

本以为这个结果是显而易见的,然而他输出的结果却是:

问题在哪?明明x和y都是类变量,在第二组print中为什么a.x和b.x一样,但是a.y和b.y就是不一样呢?

想了半天悟了一个道理。。。就是对于python来说,类变量的确是所有类共有的东西。但是那是在我们用的同一个引用的情况下,比如对于[]对象的append方法就是公用一个类变量了;但是对于赋值语句来说,如果在类中对类变量使用了赋值语句,那么python就会生成一个该对象的副本,以后的操作都是基于这个副本而不会对原来的类对象造成影响。这样就解释的通上面的现象了。

那么为了杜绝自己忘记类变量和实例变量的区别导致本不想公用变量的时候公用了变量,最好的办法就是在每个类中使用变量的时候重新初始化一下,这样就不会导致意外了。

总结

标签: python的类变量和成员变量

本文链接地址:https://www.jiuchutong.com/biancheng/375579.html 转载请保留说明!

上一篇:Python urls.py的三种配置写法实例详解(python urljoin)

下一篇:Python 正则表达式实现计算器功能

  • 利润分配会计处理例题及解析
  • 成本票和进项票怎么区分
  • 融资租入的固定资产需要计提折旧吗
  • 社保年检申报错误怎么办
  • 个体工商户季度不超过30万免增值税吗
  • 企业账户被冻结可以去开其他账户吗
  • 市场营销策划开题报告
  • 存货盘盈涉税问题
  • 旧税号开出的发票能认证抵扣吗?
  • 各省市地税发票怎么开
  • 经营性租赁怎么做账
  • 写支票人民币大写有角需要写整吗
  • 委托代销商品委托方发出商品的分录
  • 买二手设备需要注意的事项
  • 其他应收款需要本月合计吗
  • 一般纳税人开税票
  • 制造业购买纸箱子记入什么科目
  • 每月计提的工资包含社保吗
  • 原材料盘亏计入
  • 门店出纳的工作内容
  • randomdigits.exe - randomdigits是什么进程 有什么用
  • VMware虚拟机中怎么复制粘贴
  • 存出投资款现金流量表选什么
  • 建筑业总产值和营业收入相等吗?
  • 拆除固定资产
  • 计提增值税可以无付凭证吗
  • MAC OS X Yosemite开启深色模式的方法
  • 我告诉你win7旗舰版
  • 大雾山国家公园总部加特林堡
  • 继续涉入资产后续计量
  • 预计负债和预收账款
  • 张家界天门山介绍简介
  • 会计政策变更常见例子
  • 深度学习之bottleneck layer
  • 用友固定资产折旧方法
  • 退税申报系统里出货明细金额少0.1会比对报关单金额吗
  • 个人收入如何开出发票
  • db2 -x
  • 文化传媒公司介绍
  • 营业外支出增加记借方还是贷方
  • 哪些情况不能开专用发票
  • 公司汽车转卖给个人税率
  • 专项应付款转资本公积需要缴纳所得税
  • 在建工程增多
  • 居民和非居民企业的区别是什么
  • 未分配利润与利润表的勾稽关系
  • 转让旧固定资产怎么处理
  • 长期待摊费用摊销会计分录
  • 对方公司倒闭应收账款,销售需要承担吗
  • 增值税为什么不用计提
  • 员工的工资属于固定资产吗
  • 同一控股下并合并的股票
  • 业务招待费扣除标准是多少
  • 非同一控制下企业合并取得的长期股权投资
  • 以前年度损益调整怎么做账
  • 企业购买国债逆回购要交企业所得税吗
  • 预收账款账务处理流程图
  • 在sql查询中使用where子句指定的是
  • Linux虚拟机下mysql 5.7安装配置方法图文教程
  • linux内核模块编译步骤
  • linux系统查看磁盘io
  • win8屏幕键盘快捷键
  • mm server conection failed
  • win7 开机动画
  • win8软件不兼容怎么办
  • linux如何查看磁盘信息
  • win7玩不了cf
  • win7桌面移到其他盘
  • 图片如何添加到word文档
  • 实例讲解命局与大运流年作用
  • node.js最主要的特点有哪3个?
  • 使用BMFont+NGUI利用图片制作自定义字体
  • python相乘
  • javascript数组的本质
  • javascript面向对象吗
  • 延安市地方税务局电话
  • 医保预交金可以取出来吗
  • 我国现行税率分
  • 国家税务总局关于新型墙体材料增值税政策的通知
  • 支付税控服务费的账务处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设