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中为什么要用self探讨
Apr 14 Python
在Django的模型中添加自定义方法的示例
Jul 21 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
python实现超简单的视频对象提取功能
Jun 04 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
解决python3 安装不了PIL的问题
Aug 16 Python
Python中的四种交换数值的方法解析
Nov 18 Python
简单了解django文件下载方式
Feb 10 Python
聊聊python中的异常嵌套
Sep 01 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中批量替换文件名的实现代码
2011/07/20 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
详解php反序列化
2020/06/10 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
JS 表单验证大全
2011/11/23 Javascript
node.js超时timeout详解
2014/11/26 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
Python+django实现文件下载
2016/01/17 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
python代码如何注释
2020/06/01 Python
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
JAVA和C++区别都有哪些
2015/03/30 面试题
大学专科生推荐信范文
2013/11/23 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
2014年化验员工作总结
2014/11/18 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
离职告别感言
2015/08/04 职场文书
话题作文之呼唤
2019/12/18 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang