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 cookielib 登录人人网的实现代码
Dec 19 Python
Python MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
centos6.7安装python2.7.11的具体方法
Jan 16 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
Python最小二乘法矩阵
Jan 02 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
python实现飞船游戏的纵向移动
Apr 24 Python
浅谈django 重载str 方法
May 19 Python
PyTorch实现重写/改写Dataset并载入Dataloader
Jul 14 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 Python
python利用while求100内的整数和方式
Nov 07 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
如何做到多笔资料的同步
2006/10/09 PHP
MySQL中create table语句的基本语法是
2007/01/15 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
学习python (1)
2006/10/31 Python
Python性能优化技巧
2015/03/09 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
python 实现Harris角点检测算法
2020/12/11 Python
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
八年级历史教学反思
2014/01/10 职场文书
给校长的建议书100字
2014/05/16 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL