Python基础-类变量和实例变量
写在前面
如非特别说明,下文均基于Python3
大纲:
1. 类变量和实例变量
在Python Tutorial中对于类变量和实例变量是这样描述的:
Generally speaking, instance variables are for data unique to each instance and class variables are for attributes and methods shared by all instances of the class:
通常来说,实例变量是对于每个实例都独有的数据,而类变量是该类所有实例共享的属性和方法。
其实我更愿意用类属性和实例属性来称呼它们,但是变量这个词已经成为程序语言的习惯称谓。一个正常的示例是:
class Dog:
kind = 'canine' # class variable shared by all instances
def __init__(self, name):
self.name = name # instance variable unique to each instance
类Dog
中,类属性kind
为所有实例所共享;实例属性name
为每个Dog
的实例独有。
2. 类对象和实例对象
2.1 类对象
Python
中一切皆对象;类定义完成后,会在当前作用域中定义一个以类名为名字,指向类对象的名字。如
class Dog:
pass
会在当前作用域定义名字Dog
,指向类对象Dog
。
类对象支持的操作:
总的来说,类对象仅支持两个操作:
- 实例化;使用
instance_name = class_name()
的方式实例化,实例化操作创建该类的实例。 - 属性引用;使用
class_name.attr_name
的方式引用类属性。
2.2 实例对象
实例对象是类对象实例化的产物,实例对象仅支持一个操作:
- 属性引用;与类对象属性引用的方式相同,使用
instance_name.attr_name
的方式。
按照严格的面向对象思想,所有属性都应该是实例的,类属性不应该存在。那么在Pyth