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 相关文章推荐
Python内置的字符串处理函数整理
Jan 29 Python
python基础练习之几个简单的游戏
Nov 10 Python
Python自定义简单图轴简单实例
Jan 08 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 Python
jupyter notebook中美观显示矩阵实例
Apr 17 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
python导入库的具体方法
Jun 18 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 Python
pytorch 运行一段时间后出现GPU OOM的问题
Jun 02 Python
Python之基础函数案例详解
Aug 30 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
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
flexigrid 参数说明
2010/11/23 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
python将字符串转换成json的方法小结
2019/07/09 Python
Pytorch之finetune使用详解
2020/01/18 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
python中逻辑与或(and、or)和按位与或异或(&、|、^)区别
2020/08/05 Python
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
计算机专业毕业生自荐信范文
2014/03/06 职场文书
学用政策心得体会
2014/09/10 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
村官2015年度工作总结
2015/10/14 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python