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实现基本进制转换的方法
Jul 11 Python
python 的列表遍历删除实现代码
Apr 12 Python
Python算法应用实战之队列详解
Feb 04 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 Python
python远程邮件控制电脑升级版
May 23 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
pytorch--之halfTensor的使用详解
May 24 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
图解上海144收音机
2021/03/02 无线电
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
javascript 函数调用的对象和方法
2010/07/01 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
python之列表推导式的用法
2019/11/29 Python
python实现用户名密码校验
2020/03/18 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
医学生实习自我鉴定
2013/09/27 职场文书
会计实习生自我鉴定
2013/12/12 职场文书
心得体会开头
2014/01/01 职场文书
生产部管理制度
2014/01/31 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
职工培训工作总结
2015/08/10 职场文书
怎样写好工作计划
2019/04/10 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
mysql中关键词exists的用法实例详解
2022/06/10 MySQL