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中break语句的用法
May 14 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
python的socket编程入门
Jan 29 Python
python3爬取各类天气信息
Feb 24 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
python根据多个文件名批量查找文件
Aug 13 Python
Python如何在main中调用函数内的函数方式
Jun 01 Python
什么是python的自省
Jun 21 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
python 装饰器重要在哪
Feb 14 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验证码生成代码
2015/11/11 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
无工作经验者个人求职信范文
2013/12/22 职场文书
绩效工资分配方案
2014/01/18 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
自主招生自荐信范文
2015/03/04 职场文书
中学教代会开幕词
2016/03/04 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS