在Python中,类变量和实例变量都是对象属性。类变量是定义在类中但不是定义在任何方法中的变量。它是类的所有对象共享的属性。而实例变量是定义在方法中或构造函数中的变量,每个对象都有自己的一份副本。
下面我们来看一个示例代码:
class MyClass:
class_variable = 0
def __init__(self, instance_variable):
self.instance_variable = instance_variable
在这个示例中,class_variable是一个类变量,instance_variable是一个实例变量。
让我们来看一些Python解释器中的交互式会话:
>>> obj1 = MyClass(10)
>>> obj2 = MyClass(20)
>>> print(obj1.class_variable) # 访问类变量
0
>>> print(obj2.class_variable) # 访问类变量
0
>>> print(obj1.instance_variable) # 访问实例变量
10
>>> print(obj2.instance_variable) # 访问实例变量
20
>>> MyClass.class_variable = 30 # 修改类变量
>>> print(obj1.class_variable) # 访问类变量
30
>>> print(obj2.class_variable) # 访问类变量
30
>>> obj1.instance_variable = 40 # 修改实例变量
>>> print(obj1.instance_variable) # 访问实例变量
40
>>> print(obj2.instance_variable) # 访问实例变量
20
从上面的交互式会话中可以看到,类变量是共享的,当我们修改类变量时,所有对象都受影响。而实例变量是在每个对象中独立维护的,修改实例变量只会影响到该对象本身。
类变量和实例变量有各自的用途。如果你想让所有对象共享一个属性,那么使用类变量;如果你想让每个对象都有自己的属性,则使用实例变量。
本文链接:http://task.lmcjl.com/news/7576.html