Python实例变量和类变量

Python实例变量和类变量

类变量(类属性):

类变量属于类所有,所有实例共享一个变量

实例变量(实例属性)

实例变量属于各个实例所有,相互不干扰

1、实例属性
给实例绑定属性的方法可以通过self和实例变量

In [23]: class Cat(object):
    ...:     def __init__(self, name):
    ...:         self.name = name
    ...:
In [25]: c = Cat('Fat')
In [26]: c.name
Out[26]: 'Fat'

# 通过实例变量绑定属性

In [27]: c.age = 2

In [28]: c.age
Out[28]: 2

2、类属性

类属性归类所有,但所有实例都可以访问它

In [31]: class Cat(object):
    ...:     name = 'Fat' # 类属性
    ...:

In [32]: c = Cat() # 生成实例

In [33]: c.name # 实例调用类属性
Out[33]: 'Fat'

In [34]: c
Out[34]: <__main__.Cat at 0x78ba2e8>

In [35]: Cat.name # 类调用类属性
Out[35]: 'Fat'

In [36]: c.name = 'thin' # 通过实例变量更改属性“名字为short”

In [37]: c.name # 由于实例属性优先级比类属性高,会屏蔽类属性name=thin,所以输出就是thin
Out[37]: 'thin'

In [38]: Cat.name  # 类调用类属性依旧是Fat
Out[38]: 'Fat'

In [39]: c.name
Out[39]: 'thin'

In [40]: del c.name # 删除实例属性

In [41]: c.name # 再次调用,由于实例属性被删除了,就又返回到了类属性
Out[41]: 'Fat'

欢迎访问Treehl的博客
Github

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

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,236评论 4 16
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,823评论 2 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,135评论 1 32
  • Python基础-类变量和实例变量 写在前面 如非特别说明,下文均基于Python3 大纲: 1. 类变量和实例变...
    理查德成阅读 844评论 0 7
  • 一首老狼翻唱的《旅途》,似乎让大家又开始了追忆青春的道路。。。谁的青春不美好呢?哪怕放纵、哪怕青涩、哪怕带着倔强的...
    85b4d25f6e04阅读 512评论 0 0