类属性和实例属性名字冲突怎么办
修改类属性会导致所有实例访问到的类属性全部都受影响,但是,如果在实例变量上修改类属性会发生什么问题呢?class Person(object):address = 'Earth'def __init__(self, name):self.name = namep1 = Person('Bob')
p2 = Person('Alice')print 'Person.address = ' + Person.addressp1.address = 'China'
print 'p1.address = ' + p1.addressprint 'Person.address = ' + Person.address
print 'p2.address = ' + p2.address
结果如下:Person.address = Earth
p1.address = China
Person.address = Earth
p2.address = Earth
我们发现,在设置了 p1.address = 'China' 后,p1访问 address 确实变成了 'China',但是,Person.address和p2.address仍然是'Earch',怎么回事?原因是 p1.address = 'China'并没有改变 Person 的 address,而是给 p1这个实例绑定了实例属性address ,对p1来说,它有一个实例属性address(值是'China'),而它所属的类Person也有一个类属性address,所以:访问 p1.address 时,优先查找实例属性,返回'China'。访问 p2.address 时,p2没有实例属性address,但是有类属性address,因此返回'Earth'。可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。当我们把 p1 的 address 实例属性删除后,访问 p1.address 就又返回类属性的值 'Earth'了:del p1.address
print p1.address
# => Earth
可见,千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。任务
请把上节的 Person 类属性 count 改为 __count,再试试能否从实例和类访问该属性。

实例属性的优先级高,屏蔽类属性

转载于:https://www.cnblogs.com/superxuezhazha/p/5732752.html

类属性和实例属性冲突相关推荐

  1. python类中的属性分为类属性和实例属性两种_python从入门到大神---1、初始化实例、类属性、方法...

    python从入门到大神---1.初始化实例.类属性.方法 一.总结 一句话总结: 方法不加括号是代码段:感觉python方法和js,php很类似,不加括号是代码段,加括号变成方法,比如f,f() 1 ...

  2. Python之路-面向对象继承和多态类属性和实例属性类方法和静态方法

    一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强-& ...

  3. Python 类—类属性(私有属性、公有属性、实例属性、局部变量)类方法(实例方法、静态方法)

    1. 创建类 类是对某个对象的定义,它包含有关对象动作方式的信息,包括它的名称.方法.属性和事件.类不存在于内存中,因此它本身并不是对象.当程序运行需要引用类的代码时,就会在内存中创建一个类的新实例, ...

  4. 一个类的实例是另一个类的属性python_Python中的类属性和实例属性引发的一个坑...

    问题 今天在项目中遇到了个奇怪的问题,实例的一个时间属性并没有根据时间变化而变化,分析之后恍然大悟,总结下分享给大家.大家先看一段代码: import datetime import time cla ...

  5. 关于Python类属性与实例属性的讨论

    标题名字有点长. 之所以想写这个文章是因为碰巧看到网上一篇关于Pyhon中类属性及实例属性区别的帖子.因为我之前也被这个问题困扰过,今天碰巧看到了这篇帖子,发现帖子的作者只是描述了现象,然后对原因的解 ...

  6. Python 类的属性与实例属性

    放假归来 ~~~ 一.概念 类对象:类名 实例对象:通过类创建的对象 类属性:类对象所拥有的属性.归类所有,被类对象和实例对象所共有. 类的公有属性可以在类外被访问. 实例属性:实例对象所特有的属性, ...

  7. python实例属性与类属性_Python中的类属性和实例属性引发的一个坑-续

    上篇文章Python 中的类属性和实例属性,我们探讨了类属性和实例属性引发的一个小坑.总结了类属性和实例属性的区别如下:类属性可以被类和实例调用,实例属性只能被实例调用 类属性不会随着实例的调用而改变 ...

  8. Python类属性和实例属性分别是什么?

    实例属性即同一个类的不同实例,其值是互不关联的,也不会互相影响的,定义时使用"self.属性名",调用时也使用"self.属性名". 类属性则是同一个类的所有实 ...

  9. python的实例属性和静态属性表_Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法...

    类属性可以直接在方法中赋值,但 一.调用该属性时,必须先调用该方法: 二.与 init 方法区别是,init方法只初始化一次,初始化完成后作为全局变量.在方法中赋值属性,每次调用该方法,该属性初始化一 ...

最新文章

  1. Keil进入仿真,窗口不显示程序运行箭头
  2. 哪些类型的 Component 不需要参加 SAP Spartacus 的服务器端渲染?
  3. DVT和ADVT - 为数不多的DICOM测试工具说明AND下载
  4. GC原理---对象可达判断
  5. linux wamp,ubuntu wamp server ..................
  6. 转android项目开发 工作日志 2011.10.8--toast消息框使用
  7. 一步一步学Silverlight 2系列(5):实现简单的拖放功能_转载
  8. apicloud开发时的一些注意点
  9. 【Codeforces 1114C】Trailing Loves (or L'oeufs?)
  10. 基于双生视界的live2d提取与查看方法
  11. html5都能干嘛种花,把这19种花种起来,整个家都能变成大花园!
  12. AHU算法课-DP动态规划
  13. java的多态是什么意思_【Java】基础18:什么叫多态?
  14. Python对文件(外存)和内存的操作
  15. swift lazy 线程不安全
  16. 利用万能数据结构表存储多源异构数据
  17. 优漫动游平面设计思维思维训练法
  18. Linux--自旋锁(介绍及API简介)
  19. 讯飞智能录音笔SR502帮职场人
  20. vlan的基本指令_华为二层交换机VLAN常用命令

热门文章

  1. java 创建日程到期提醒_日程管理工具—Things 3
  2. Oracle根据年份分组
  3. idea查看类和方法的结构图
  4. 写最少的代码,避免给自己找麻烦
  5. Visual Studio 2017 的重大功能回顾和针对 .NET 开发者的更新
  6. 【原创】MVC+ZTree实现权限树的功能
  7. IIC总线通讯协议、EEPROM芯片
  8. figma下载_切换到Figma并在其中工作不必是火箭科学,这就是为什么
  9. Vue、React 之间如何实现代码移植?
  10. Spark List组件滚动条加事件使datalist数据发生变化