ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何理解Python 3中的类和实例变量

2026/9/16 2:27:43 拓冰建站 浏览量
如何理解Python 3中的类和实例变量

简介

面向对象编程允许变量在类级别或实例级别使用。变量本质上是程序中使用的值的符号。

在类级别,变量被称为类变量,而在实例级别的变量被称为实例变量

当我们期望变量在实例之间保持一致,或者当我们想要初始化一个变量时,我们可以在类级别定义该变量。当我们预期变量在实例之间会显著变化时,我们可以在实例级别定义它们。

软件开发的原则之一是DRY原则,即不要重复自己。这个原则旨在限制代码中的重复,并且面向对象编程遵循DRY原则,因为它减少了冗余。

本教程将演示在 Python 中面向对象编程中使用类变量和实例变量。

先决条件

您应该已经安装了 Python 3,并在计算机或服务器上设置了编程环境。如果您还没有设置编程环境,可以参考本地编程环境的安装和设置指南,或者适用于您的操作系统(Ubuntu、CentOS、Debian 等)的服务器编程环境的设置指南。

类变量

类变量是在类构造内定义的。因为它们由类本身拥有,所以类变量被所有类的实例共享。因此,除非您使用类变量初始化变量,否则它们通常对每个实例具有相同的值。

类变量在所有方法之外定义,按照惯例,通常放在类头部下方和构造方法及其他方法之前。

一个单独的类变量如下所示:

class Shark:animal_type = "fish"

在这里,变量 animal_type 被赋予值 "fish"

我们可以创建 Shark 类的一个实例(我们将其称为 new_shark),并使用点表示法打印变量:

class Shark:animal_type = "fish"new_shark = Shark()
print(new_shark.animal_type)

让我们运行程序:

python shark.py
fish

我们的程序返回了变量的值。

让我们添加一些更多的类变量并将它们打印出来:

class Shark:animal_type = "fish"location = "ocean"followers = 5new_shark = Shark()
print(new_shark.animal_type)
print(new_shark.location)
print(new_shark.followers)

就像任何其他变量一样,类变量可以由 Python 中可用的任何数据类型组成。在这个程序中,我们有字符串和一个整数。让我们再次使用 python shark.py 命令运行程序并查看输出:

fish
ocean
5

new_shark 的实例能够访问所有类变量,并在运行程序时将它们打印出来。

类变量允许我们在构造类时定义变量。然后这些变量及其关联的值对每个类的实例都是可访问的。

实例变量

实例变量由类的实例拥有。这意味着对于类的每个对象或实例,实例变量是不同的。

与类变量不同,实例变量是在方法内定义的。

在下面的 Shark 类示例中,nameage 是实例变量:

class Shark:def __init__(self, name, age):self.name = nameself.age = age

当我们创建一个 Shark 对象时,我们将不得不定义这些变量,它们作为参数传递给构造方法或另一个方法。

class Shark:def __init__(self, name, age):self.name = nameself.age = agenew_shark = Shark("Sammy", 5)

与类变量一样,我们可以类似地调用打印实例变量:

class Shark:def __init__(self, name, age):self.name = nameself.age = agenew_shark = Shark("Sammy", 5)
print(new_shark.name)
print(new_shark.age)

当我们使用 python shark.py 运行上面的程序时,我们将收到以下输出:

Sammy
5

我们收到的输出由我们为 new_shark 对象的实例变量初始化的值组成。

让我们创建 Shark 类的另一个对象 stevie

class Shark:def __init__(self, name, age):self.name = nameself.age = agenew_shark = Shark("Sammy", 5)
print(new_shark.name)
print(new_shark.age)<^>stevie = Shark("Stevie", 8)<^>
<^>print(stevie.name)<^>
<^>print(stevie.age)<^>
Sammy
5
Stevie
8

stevie 对象,就像 new_shark 对象一样,将 Shark 类的特定参数传递给为该实例分配值的实例变量。

由类的对象拥有的实例变量允许每个对象或实例为这些变量分配不同的值。

使用类变量和实例变量一起工作

类变量和实例变量通常会同时使用,因此让我们使用我们创建的 Shark 类的两个对象来看一个例子。程序中的注释概述了过程的每个步骤。

class Shark:# 类变量animal_type = "fish"location = "ocean"# 具有实例变量 name 和 age 的构造方法def __init__(self, name, age):self.name = nameself.age = age# 具有实例变量 followers 的方法def set_followers(self, followers):print("This user has " + str(followers) + " followers")def main():# 第一个对象,设置构造方法的实例变量sammy = Shark("Sammy", 5)# 打印实例变量 nameprint(sammy.name)# 打印类变量 locationprint(sammy.location)# 第二个对象stevie = Shark("Stevie", 8)# 打印实例变量 nameprint(stevie.name)# 使用 set_followers 方法并传递 followers 实例变量stevie.set_followers(77)# 打印类变量 animal_typeprint(stevie.animal_type)if __name__ == "__main__":main()

当我们使用 python shark.py 运行程序时,我们将收到以下输出:

Sammy
ocean
Stevie
This user has 77 followers
fish

在这里,我们在 Shark 类的两个对象 sammystevie 中使用了类变量和实例变量。

结论

在面向对象编程中,类级别的变量被称为类变量,而对象级别的变量被称为实例变量。

这种区分允许我们使用类变量为变量分配特定值来初始化对象,并使用实例变量为每个对象使用不同的变量。

利用类和实例特定的变量可以确保我们的代码遵循DRY原则,以减少代码中的重复。