浅谈python 中类属性共享的问题


Posted in Python onJuly 02, 2019

感觉这种理解有问题,举个例子来说。

class Dog(object): 
 
  name = 'dog' 
 
  def init(self): 
 
    self.age = 18
 
d1 = Dog()
 
d2 = Dog()

这里有两个实例 d1,d2 吧。

d1.name # 输出 dogd2.name # 输出 dogd1.name = 'abc'
d1.name # 输出 abcd2.name # 输出 dogDog.name # 输出 dog

原因是 d1.name 输出 dog 不是因为这个实例共享了类属性,而是因为这个实例没有 dog 属性,所以 python 查找了类属性。但是一旦你修改了 d1.name 相当于给 d1 实例绑定了 name 属性之后,d1.name 就与类属性无关了。既然这样就谈不上实例之间共享类属性了,因为只要一赋值,就相当于绑定了属性,则上述 d1.name 的含义和 d2.name 的含义就不同了,它们的值也不同,很明显它们的数据没有共享。

但是要修改类属性,应该用

Dog.name = 'new name'

而不应该是

dog1.name = 'new name'

因为实例属性同名而覆盖类属性,的确是一个很容易忽视、出错的地方。

>>> class Dog():
...  name = "dog"
... 
>>> d1 = Dog()
>>> d1.name
'dog'
>>> d2 = Dog()
>>> d2.name
'dog'
>>> Dog.name
'dog'
>>> Dog.name = "a"
>>> d.name
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined
>>> d1.name
'a'
>>> d2.name
'a'
>>>

以上这篇浅谈python 中类属性共享的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
python决策树之CART分类回归树详解
Dec 20 Python
Python类的继承和多态代码详解
Dec 27 Python
python实现将读入的多维list转为一维list的方法
Jun 28 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
Python实现自定义读写分离代码实例
Nov 16 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 Python
如何通过Python实现标签云算法
Jul 02 #Python
对python特殊函数 __call__()的使用详解
Jul 02 #Python
对python 调用类属性的方法详解
Jul 02 #Python
python算法题 链表反转详解
Jul 02 #Python
python输入多行字符串的方法总结
Jul 02 #Python
Django高级编程之自定义Field实现多语言
Jul 02 #Python
python 杀死自身进程的实现方法
Jul 01 #Python
You might like
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
vue-test-utils初使用详解
2019/05/23 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
Python中字符串对齐方法介绍
2015/05/21 Python
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
python 对key为时间的dict排序方法
2018/10/17 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
数据库的约束含义
2012/09/09 面试题
大学生简单自荐信
2013/11/10 职场文书
空气的环保标语
2014/06/12 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
悬空寺导游词
2015/02/05 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
2016银行求职自荐信
2016/01/28 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
Python 内置函数速查表一览
2021/06/02 Python
Golang并发操作中常见的读写锁详析
2021/08/30 Golang