python

实例变量(也称为实例属性) & 类变量(也称为类属性)
  • 实例变量(也称为实例属性)
    • 属于类的实例的变量,每个对象或实例都有自己独立的一套实例变量,也称为实例属性。
    • 定义在类的方法中(通常是在__init__方法内),并且通过self来引用。
    • 当创建一个类的新实例时,每个实例变量都会得到自己的一份拷贝。
    • 实例变量在类的方法中通常通过 self 关键字来定义和访问。
    • 可通过在类中定义特殊变量 __slots__ 的属性来限制实例的属性,但是仅对当前类的实例起作用,对其子类不起作用
      • 当一个类定义了__slots__属性,它告诉Python解释器不要为这个类使用普通的基于字典的对象表示形式。相反,为了节省内存和提高访问速度,它会为实例创建一个更加静态的、固定大小的字段集合。
      class Stu(): __slots__ = ('name', 'age') pass s = Stu() s.name = 'Mi' # 可以正常设置 s.age = 30 # 可以正常设置 s.score = 80 # 报错AttributeError: 'Stu' object has no attribute 'score' # 在其子类中就不起作用了 class Stu1(Stu): pass s = Stu1() # 均可正常设置 s.name = 'F' s.age = 20 s.score = 30
  • 类变量(也称为类属性)
    • 属于类本身的变量,由所有实例共享,也称为类属性。
    • 类变量是在类定义的顶层声明的,而非在方法内部(即定义在类的内部,但在所有方法之外)
    • 类变量在所有实例之间是共享的,这意味着如果某个实例改变了类变量的值,这个变化会反映到所有其他实例上
例如:
python复制代码 class ExampleClass: class_variable = 0# 类变量 def __init__(self, instance_variable_value): self.instance_variable = instance_variable_value# 实例变量# 创建两个ExampleClass的实例 instance1 = ExampleClass(1) instance2 = ExampleClass(2) # 每个实例的实例变量是独立的 print(instance1.instance_variable)# 输出: 1 print(instance2.instance_variable)# 输出: 2 # 类变量在所有实例之间共享 print(ExampleClass.class_variable)# 输出: 0 print(instance1.class_variable)# 输出: 0 print(instance2.class_variable)# 输出: 0 # 更改类变量将影响所有实例 ExampleClass.class_variable = 10 print(instance1.class_variable)# 输出: 10 print(instance2.class_variable)# 输出: 10
If you have any questions, please contact me.