解释 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"
在这个例子中,obj1
和 obj2
都有自己的 my_instance_var
实例变量,它们之间互不影响。