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版飞机大战代码分享
Nov 20 Python
django celery redis使用具体实践
Apr 08 Python
Python下简易的单例模式详解
Apr 08 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
ajax php 实现写入数据库
2009/09/02 PHP
php实现两个数组相加的方法
2015/02/17 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
checkbox使用示例
2013/08/23 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
2017/02/23 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
3分钟学会一个Python小技巧
2018/11/23 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
秸秆管理实施方案
2014/03/15 职场文书
中介业务员岗位职责
2014/04/09 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
先进党支部事迹材料
2014/12/24 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers