更新时间:2024-04-09 来源:黑马程序员 浏览量:

在Python中,类变量(class variables)和实例变量(instance variables)是面向对象编程中的两种不同类型的变量,它们在作用域、生命周期、访问方式等方面有所不同。
1.定义位置:
(1)在类的内部,但在任何方法之外定义。
(2)它们属于类,而不是任何特定的实例。
(3)通常在类的顶层定义,即在所有方法之外。
2.作用域:
(1)类变量在整个类中都是可见的,包括类的所有实例。
(2)所有的实例共享同一份类变量的副本。
3.生命周期:
(1)类变量的生命周期与类本身相同,即类被加载进内存时创建,当程序退出时销毁。
4.访问方式:
(1)可以通过类名或实例名访问类变量。
(2)在没有同名实例变量的情况下,可以通过类名直接访问类变量。
5.修改方式:
(1)可以通过类名直接修改类变量。
(2)修改类变量会影响所有实例。
1.定义位置:
(1)在类的任何方法中使用 self 关键字定义的变量都是实例变量。
(2)每个实例都有自己的一组实例变量。
2.作用域:
(1)实例变量的作用域限制在当前实例中,不同实例之间的实例变量互不影响。
3.生命周期:
(1)实例变量的生命周期与其所属的实例相同,即在实例被销毁时实例变量也会被销毁。
4.访问方式:
(1)实例变量只能通过实例名访问。
(2)可以在类的方法中通过 self 关键字访问实例变量。
5.修改方式:
(1)实例变量通常在 __init__() 方法中初始化,并通过实例方法或直接在实例上进行修改。
(2)实例变量的修改仅影响当前实例,不影响其他实例或类变量。
示例:
class MyClass: class_var = 0 # 类变量 def __init__(self, instance_var): self.instance_var = instance_var # 实例变量 # 创建实例 obj1 = MyClass(1) obj2 = MyClass(2) # 访问类变量 print(MyClass.class_var) # 输出:0 print(obj1.class_var) # 输出:0 print(obj2.class_var) # 输出:0 # 修改类变量 MyClass.class_var = 10 print(MyClass.class_var) # 输出:10 print(obj1.class_var) # 输出:10 print(obj2.class_var) # 输出:10 # 修改实例变量 obj1.instance_var = 100 print(obj1.instance_var) # 输出:100 print(obj2.instance_var) # 输出:2
总之,类变量适用于需要在类的所有实例之间共享数据的情况,而实例变量适用于每个实例都有自己独立数据的情况。
AI鸿蒙原生智能正式版课程,培养全端跨平台鸿蒙工程师
2026-03-10AI鸿蒙原生智能正式版课程,培养全端跨平台鸿蒙工程师
2026-03-10毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03