类对象支持两种操作:属性引用和实例化。

实例对象唯一操作是属性引用,有两种有效的属性名称,数据属性和方法。

In [15]: class Animals():
    ...:     name = "cat"
    ...:     age = 7
    ...:     
    ...:     def __init__(self):
    ...:         self.name = "dog"
    ...:         self.color = "white"
    ...: 

In [16]: Animals.name
Out[16]: 'cat'

In [17]: Animals.age
Out[17]: 7

In [18]: a = Animals()

In [19]: print(a.name, a.age)
dog 7

In [20]: a.name = "rabbit"

In [21]: print(a.name)
rabbit

In [22]: Animals.name = "kangaroo"

In [23]: print(Animals.name)
kangaroo

In [24]: a.name
Out[24]: 'rabbit'

In [25]: a.age = 9

In [26]: a.age
Out[26]: 9

In [27]: Animals.age
Out[27]: 7

In [28]: Animals.color
Traceback (most recent call last):

  File "<ipython-input-28-a21b2ccbf4db>", line 1, in <module>
    Animals.color

AttributeError: type object 'Animals' has no attribute 'color'


In [29]: Animals.color = "black"

In [30]: Animals.color
Out[30]: 'black'

In [16] 和[17] 都是类对象的属性引用。

In [5] 是类对象的实例化。

In [18] 和[19]说明实例对象可以引用类对象的属性,但是优先引用实例对象属性。

In [20]和[30] 说明实例对象可以改变自身的属性和增加自身的属性。

类对象不能引用实例对象的属性,但可以改变自身的属性和增加自身的属性。

实例对象是类对象生成的一个副本,但生成后,两者的属性就可以完全不一样了。

类对象比实例对象类似继承关系,实例对象可以引用类对象的所有属性,但类对象不能引用实例对象的属性。