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获取指定路径下所有指定后缀文件的方法
May 26 Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 Python
Python实现类的创建与使用方法示例
Jul 25 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
详解Python用户登录接口的方法
Apr 17 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
python中count函数简单用法
Jan 05 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
python 模拟登陆github的示例
Dec 04 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获取文件后缀名的三个函数
2012/10/15 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
2019/08/03 PHP
CCPry JS类库 代码
2009/10/30 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
python skimage 连通性区域检测方法
2018/06/21 Python
python实现堆排序的实例讲解
2020/02/21 Python
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
销售工作岗位职责
2013/12/24 职场文书
个人实习生的自我评价
2014/02/16 职场文书
超越自我演讲稿
2014/05/21 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
招商引资工作汇报
2014/10/28 职场文书
辞职信如何写
2015/02/27 职场文书
数学复习课教学反思
2016/02/18 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
python区块链持久化和命令行接口实现简版
2022/05/25 Python
nginx静态资源的服务器配置方法
2022/07/07 Servers
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS