跳到主要内容

解释 Python 类变量和实例变量?

参考答案:

在 Python 中,变量可以分为类变量和实例变量两种。这两种变量在面向对象编程中扮演着不同的角色。

类变量(Class Variables)

类变量也称为静态变量,是定义在类中但在方法之外的变量。类变量对于类中的所有实例都是共享的,也就是说,类中的所有实例都会访问同一个类变量。这意味着如果你改变了一个类变量的值,那么这个改变会影响到类中的所有实例。

这是一个类变量的例子:

class MyClass:
    my_class_var = "I am a class variable"

# 创建实例
obj1 = MyClass()
obj2 = MyClass()

# 访问类变量
print(obj1.my_class_var)  # 输出 "I am a class variable"
print(obj2.my_class_var)  # 输出 "I am a class variable"

# 修改类变量
MyClass.my_class_var = "New value"

# 再次访问类变量
print(obj1.my_class_var)  # 输出 "New value"
print(obj2.my_class_var)  # 输出 "New value"

实例变量(Instance Variables)

实例变量是定义在类的实例(即对象)中的变量。每个实例都有自己独立的实例变量,即使两个实例的实例变量名称相同,它们也是独立的,互不影响。实例变量通常在类的初始化方法 __init__ 中定义和初始化。

这是一个实例变量的例子:

class MyClass:
    def __init__(self, my_instance_var):
        self.my_instance_var = my_instance_var

# 创建实例
obj1 = MyClass("I am instance variable of obj1")
obj2 = MyClass("I am instance variable of obj2")

# 访问实例变量
print(obj1.my_instance_var)  # 输出 "I am instance variable of obj1"
print(obj2.my_instance_var)  # 输出 "I am instance variable of obj2"

# 修改实例变量
obj1.my_instance_var = "New value for obj1"

# 再次访问实例变量
print(obj1.my_instance_var)  # 输出 "New value for obj1"
print(obj2.my_instance_var)  # 输出 "I am instance variable of obj2"

在这个例子中,obj1obj2 都有自己的 my_instance_var 实例变量,它们之间互不影响。