类对象支持两种操作:属性引用和实例化。
实例对象唯一操作是属性引用,有两种有效的属性名称,数据属性和方法。
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] 说明实例对象可以改变自身的属性和增加自身的属性。
类对象不能引用实例对象的属性,但可以改变自身的属性和增加自身的属性。
实例对象是类对象生成的一个副本,但生成后,两者的属性就可以完全不一样了。
类对象比实例对象类似继承关系,实例对象可以引用类对象的所有属性,但类对象不能引用实例对象的属性。