Python class属性

class的属性分两种:类属性和实例属性

>>> class AA(object):
...     x = 1
... 
>>> AA.x             #类属性
1
>>> aa = AA()
>>> aa.x             #实例属性
1

属性为不可变对象

实例属性不影响类属性:

>>> aa.x += 1
>>> aa.x
2
>>> AA.x
1

类属性影响实例属性:

>>> AA.x += 1
>>> AA.x
2
>>> aa.x
2

属性为可变对象

>>> class BB(object):
...     y = [1,2,3]

类属性和实例属性相互影响:

>>> bb = BB()
>>> BB.y.append(4)
>>> BB.y
[1, 2, 3, 4]
>>> bb.y
[1, 2, 3, 4]
>>> bb.y.append('aa')
>>> bb.y
[1, 2, 3, 4, 'aa']
>>> BB.y
[1, 2, 3, 4, 'aa']

添加属性

添加类属性,会影响到实例属性:

>>> class CC(object):
...     g = 3
... 
>>> cc = CC()
>>> CC.h = 4
>>> cc.h
4

添加实例属性,不会影响到类属性:

>>> cc.i = 5
>>> CC.i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'CC' has no attribute 'i'
>>> 

可以看出类没有收纳 i 这个属性。进一步说明类属性不受实例属性左右。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,187评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,814评论 0 9
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,906评论 1 10
  • 闲扯:毕业三年从事通信方面工作,由于巧合认识了一位从事证券的大叔,谈吐稳重,颇有眼见。推荐《证券分析》(格雷厄姆)...
    模糊的正确阅读 492评论 0 1