Python类变量和实例变量的区别

在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

展开阅读全文