先看图理解:

类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有。

类属性就是类对象(Tool)所拥有的属性,它被所有类对象实例对象(实例方法)所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类对象实例对象访问

类属性

  1. class People(object):
  2. name = 'Tom' #公有的类属性
  3. __age = 12 #私有的类属性
  4. p = People()
  5. print(p.name) #正确
  6. print(People.name) #正确
  7. print(p.__age) #错误,不能在类外通过实例对象访问私有的类属性
  8. print(People.__age) #错误,不能在类外通过类对象访问私有的类属性

实例属性(对象属性)

  1. class People(object):
  2. address = '山东' #类属性
  3. def __init__(self):
  4. self.name = 'xiaowang' #实例属性
  5. self.age = 20 #实例属性
  6. p = People()
  7. p.age =12 #实例属性
  8. print(p.address) #正确
  9. print(p.name) #正确
  10. print(p.age) #正确
  11. print(People.address) #正确
  12. print(People.name) #错误
  13. print(People.age) #错误

通过实例(对象)去修改类属性

  1. class People(object):
  2. country = 'china' #类属性
  3. print(People.country)
  4. p = People()
  5. print(p.country)
  6. p.country = 'japan'
  7. print(p.country) #实例属性会屏蔽掉同名的类属性
  8. print(People.country)
  9. del p.country #删除实例属性
  10. print(p.country)

总结

  • 如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性

类属性和实例属性的区别相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 如何理解Java的类变量、成员变量、常量、类属性、实例属性、字段(field)、成员方法、类方法

    文章目录 变量相关概念 变量/常量 类变量/静态变量 成员变量/实例变量 类属性/实例属性/对象属性 什么是 field 成员变量和类变量的区别 两个变量的生命周期不同 访问方式不同 数据存储位置不同 ...

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

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

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

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

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

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

最新文章

  1. StaticFactoryMethod_Level1
  2. 独家 | 识别并解决数据质量问题的数据科学家指南
  3. 半世纪全球顶级学者迁移图(附视频、亿级学术信息)| 数据院科技大数据研究中心发布
  4. php 发出get与post请求
  5. hadoop job 未跑满资源_Hadoop多用户资源管理–Fair Scheduler介绍与配置
  6. 17 HTTP编程入门
  7. 《PHP精粹:编写高效PHP代码》——第1章面向对象编程
  8. 15岁杀人犯监狱学编程,37岁保释年薪70万
  9. python——获取数据类型
  10. python和rpa_什么是RPA
  11. Loadrunner脚本优化-参数化之关联MySQL数据库获取数据
  12. mount error 12 = Cannot allocate memory
  13. 【理论】【转】Android项目重构之路:架构篇
  14. 请求发送者与接收者解耦——命令模式(五)
  15. 数学建模——论文排版
  16. Android中铃声总结源码
  17. 虚拟数字人的“风”,从“工业级”吹向“消费级”
  18. 在上海乐字节学习CRM项目管理
  19. 如何做到在子线程更新 UI?
  20. linux cpu飙高原因排查(有手就行)

热门文章

  1. 朴实无华之特征选择方法总结
  2. 手把手教你调用百度api(以花卉识别为例)
  3. 打赏最多的网红,必用这九种方法
  4. 深度学习计算机视觉极限将至,我们该如何找到突破口?
  5. 重庆北大青鸟沙坪坝校区A08班学员作品——漫画书城网站
  6. 链表中的并集和交集(c/c++实现)
  7. cuplayer酷播播放器
  8. 2013 imac 安装 win7
  9. TE/TM/TEM波简要对比
  10. 2021-06-29 复合赋值运算的计算顺序