Python中的“类变量”和“成员变量”的区别——易混淆
在Python的面向对象编程中,类变量和成员变量(也被称为实例变量)是两种不同类型的数据。
1、类变量(Class Variable):类变量是定义在类中,但在任何方法之外的变量。类变量在该类的所有实例之间共享。这意味着如果你更改了类变量,那么它会在所有该类的实例中改变。
例如:
class MyClass:
class_variable = "I'm a class variable"
instance1 = MyClass()
instance2 = MyClass()
print(instance1.class_variable) # 输出 "I'm a class variable"
print(instance2.class_variable) # 输出 "I'm a class variable"
MyClass.class_variable = "I'm a modified class variable"
print(instance1.class_variable) # 输出 "I'm a modified class variable"
print(instance2.class_variable) # 输出 "I'm a modified class variable"
在这个例子中,class_variable 是一个类变量,它在 MyClass 的所有实例 instance1 和 instance2 之间共享。
2、成员变量(Instance Variable):成员变量是定义在类的方法中的变量,它属于对象的状态。每个对象或实例都有自己的成员变量。这意味着如果你更改了一个对象的成员变量,它不会影响其他对象的相同成员变量。
例如:
class MyClass:
def __init__(self):
self.instance_variable = "I'm an instance variable"
instance1 = MyClass()
instance2 = MyClass()
print(instance1.instance_variable) # 输出 "I'm an instance variable"
print(instance2.instance_variable) # 输出 "I'm an instance variable"
instance1.instance_variable = "I'm a modified instance variable"
print(instance1.instance_variable) # 输出 "I'm a modified instance variable"
print(instance2.instance_variable) # 输出 "I'm an instance variable"
在这个例子中,instance_variable 是一个成员变量,每个 MyClass 的实例 instance1 和 instance2 都有自己的 instance_variable。
总的来说,类变量在所有实例间共享,而成员变量是每个实例特有的