Python小白不正确的使用类变量实例


Posted in Python onMay 29, 2020

不正确的使用类变量

看下面一个例子:

>>> class A(object):
...   x = 1
...
>>> class B(A):
...   pass
...
>>> class C(A):
...   pass
...
>>> print A.x, B.x, C.x
1 1 1

看起来没有问题。

>>> B.x = 2
>>> print A.x, B.x, C.x
1 2 1

嗯哈,还是和预想的一样

>>> A.x = 3
>>> print A.x, B.x, C.x
3 2 3

我了个去。只是改变了A.x,为啥C.x也变了?

在Python里,类变量通常在内部被当做字典来处理并遵循通常所说的方法解析顺序(Method Resolution Order (MRO))。因此在上面的代码中,因为属性x在类C中找不到,因此它会往上去它的基类中查找(在上面的例子中只有A这个类,当然Python是支持多重继承(multiple inheritance)的)。换句话说,C没有它自己独立于A的属性x。因此对C.x的引用实际上是对A.x的引用。(B.x不是对A.x的引用是因为在第二步里B.x=2将B.x引用到了2这个对象上,倘若没有如此,B.x仍然是引用到A.x上的。)

知识点补充:

类变量、实例变量概念

类变量:

类变量就是定义在类中,但是在函数体之外的变量。通常不使用self.变量名赋值的变量。类变量通常不作为类的实例变量的,类变量对于所有实例化的对象中是公用的。

实例变量:

实例变量是定义在方法中的变量,使用self绑定到实例上的变量,只是对当前实例起作用。

以上就是Python小白不正确的使用类变量实例的详细内容,更多关于Python新手不正确的使用类变量的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
35个Python编程小技巧
Apr 01 Python
在Docker上开始部署Python应用的教程
Apr 17 Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 Python
详解Python中where()函数的用法
Mar 27 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
mac安装scrapy并创建项目的实例讲解
Jun 13 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
Python整数对象实现原理详解
Jul 01 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
Python计算机视觉里的IOU计算实例
Jan 17 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
python小白切忌乱用表达式
May 29 #Python
Python爬虫实现百度翻译功能过程详解
May 29 #Python
Django中的模型类设计及展示示例详解
May 29 #Python
如何理解Python中包的引入
May 29 #Python
浅谈django channels 路由误导
May 28 #Python
Python如何实现FTP功能
May 28 #Python
python基于socket函数实现端口扫描
May 28 #Python
You might like
js下函数般调用正则的方法附代码
2008/06/22 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
提高PHP编程效率的方法
2013/11/07 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
Javascript中作用域的详细介绍
2016/10/06 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
详解vue中多个有顺序要求的异步操作处理
2019/10/29 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
python简单猜数游戏实例
2015/07/09 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
教你学会使用Python正则表达式
2017/09/07 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
Python爬取网页信息的示例
2020/09/24 Python
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
火锅店营销方案
2014/02/26 职场文书
服务理念标语
2014/06/18 职场文书
工作求职信
2014/07/04 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
离婚案件答辩状
2015/05/22 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL