返回
打通编程任督二脉之Python面向对象中的类变量,实例变量
前端
2023-11-04 05:18:51
什么是类变量和实例变量
在Python中,变量可以分为两类:类变量和实例变量。类变量是属于类的变量,而实例变量是属于对象的变量。
类变量在类中定义,并由所有该类的实例共享。这意味着,如果修改了一个实例的类变量,那么该类的所有其他实例的类变量也会被修改。
实例变量在实例中定义,并且只属于该实例。这意味着,如果修改了一个实例的实例变量,那么该类的其他实例的实例变量不会受到影响。
理解类变量和实例变量的比喻
为了更好地理解类变量和实例变量,我们可以使用一个简单的比喻。
想象一下,你是一个学校的老师。你有一个学生名叫小明。小明的身高是1米50。
小明的身高是一个实例变量,因为它只属于小明这个实例。如果小明长高了,那么只有小明的身高会发生变化,其他学生的身高不会受到影响。
现在,假设你有一个班级,班上所有的学生都是1米50。那么,班上所有学生的身高都可以看作是一个类变量。如果班上所有学生的身高都长高了,那么班上所有学生的身高都会发生变化。
类变量和实例变量的例子
为了进一步理解类变量和实例变量,让我们来看一个简单的例子。
class Student:
# 类变量
school_name = "清华大学"
# 实例变量
def __init__(self, name, age):
self.name = name
self.age = age
# 创建两个学生实例
student1 = Student("小明", 18)
student2 = Student("小红", 19)
# 修改student1的实例变量
student1.name = "小强"
# 打印student1和student2的变量
print(student1.name, student1.age, student1.school_name)
print(student2.name, student2.age, student2.school_name)
在这个例子中,school_name
是一个类变量,它属于Student
类。name
和age
是实例变量,它们属于student1
和student2
这两个实例。
当我们修改student1
的name
变量时,只有student1
的name
变量会发生变化,student2
的name
变量不会受到影响。
总结
类变量和实例变量是Python中面向对象编程中的两个重要概念。类变量是属于类的变量,而实例变量是属于对象的变量。类变量由所有该类的实例共享,而实例变量只属于该实例。
理解类变量和实例变量对于理解Python的面向对象编程至关重要。通过本文的讲解,相信你已经对类变量和实例变量有了更深入的理解。