位置: 编程技术 - 正文

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 正则表达式实现计算器功能

  • 异地预缴可以退吗
  • 工商年报多久能显示
  • 物业公司车位出租能开具什么发票
  • 小规模企业开具普通发票月如何做账
  • 印花税技术服务合同按什么交
  • 视同销售货物缴纳增值税的有哪些?
  • 进账多于销项怎样报税
  • 水电费的进项税额能抵扣吗
  • 其他综合收益在利润表的哪个位置哪里
  • 房地产简易计税税率
  • 费用退回怎么做账
  • 背书转让的电子承兑汇票开收据还是发票
  • 银行收到对方付款的会计分录
  • 经营租赁发生改良费用的会计分录如何处理?
  • 未报税会怎么样
  • 居间费税收是多少
  • 如何确定增值税以旧换新方式下销售货物的销售额
  • 股息收入属于应税收入吗
  • 对方给我们开发票
  • 员工受伤报销
  • 出租房产如何交土地使用税
  • 停车费可以抵扣吗合法吗
  • 财付通转款会计分录
  • 吸收合并企业的情形
  • 处置股权后相应债权坏账损失怎么处理?
  • 进项抵扣怎么做分录
  • 零申报逾期未申报怎么补报
  • 应付款项余额
  • phpstudy的ftp
  • 共用水电无法取水怎么办
  • 固定资产转让的账务处理
  • 如何做世界上最小的遥控飞机
  • 进项税额的账务处理
  • 支付的食堂费用怎么入账
  • 承兑找公司贴现合法吗
  • thinkphp6验证
  • 律师费怎么要回来
  • 所得税汇算清缴报告在哪查
  • db2udb
  • mysql存储过程cursor
  • 海关缴款书能重开吗
  • 法人与财务负责人不应为同一人
  • 企业自产自用的产品需要缴纳增值税吗
  • 机器设备计提折旧纳税调整
  • 经营户个人所得税
  • 给个体工商户打工受伤怎么办
  • 公司收到社保局的提醒函怎么办
  • 股权并购与收购的区别
  • 对方给我们等额的钱
  • 施工企业结算单能不能入账
  • 专票多长时间
  • 外籍个人是否可以买社保
  • 股东往来款算投资款吗
  • 代发工资怎么算税
  • 预期年化收益率安全吗
  • 银行日记账年底是0第二年年初怎么写
  • 财务费用包括哪几项
  • Mysql中LAST_INSERT_ID()的函数使用详解
  • mysql主界面
  • mysql的日志
  • win8如何安装win10系统
  • macbook移到废纸篓
  • centos6.5修改用户名
  • debian怎么开启端口
  • win10预览版和正式版
  • windows开始界面
  • win7格式化怎么操作?
  • unity碰撞得分代码
  • vue.js有哪些组件
  • IE hack条件写法
  • nodejs使用视频教程
  • javascript基于什么的语言
  • 批量 update
  • javascript数学函数
  • 一不小心做错事男朋友就开始说我
  • listview.items.add
  • 176是哪的号码
  • 退休军人免门票吗
  • 国有土地使用权出让和转让条例
  • 如何查询纳税人识别号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设