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获取当前时间对应unix时间戳的方法
May 15 Python
python中使用正则表达式的连接符示例代码
Oct 10 Python
django之session与分页(实例讲解)
Nov 13 Python
使用python实现BLAST
Feb 12 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
python实现三次样条插值
Dec 17 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
python批量读取文件名并写入txt文件中
Sep 05 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
简述python Scrapy框架
Aug 17 Python
python实现移动木板小游戏
Oct 09 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
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
javascript常用功能汇总
2015/07/05 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
angular.extend方法的具体使用
2017/09/14 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
Django之路由层的实现
2019/09/09 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python调用JavaScript代码的方法
2020/10/27 Python
python 检测图片是否有马赛克
2020/12/01 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
外贸业务员岗位职责
2013/11/24 职场文书
小学语文课后反思精选
2014/04/25 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
2014年财政工作总结
2014/12/10 职场文书
长征观后感
2015/06/09 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
idea下配置tomcat避坑详解
2022/04/12 Servers
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript