深入理解类属性与实例属性:Python面向对象编程中的关键概念

类属性

深入理解类属性与实例属性:Python面向对象编程中的关键概念

类属性是在类定义里声明的属性,它与类本身相关联。类属性一般在类定义的顶部进行声明,在类的所有实例间是共享的。能够通过类名去访问类属性,也可以通过类的实例来访问。当某一个实例试图访问一个类属性时,倘若该实例没有同名的实例属性,就会返回该类属性的值。

让我们来看一个示例:

class Circle:
    pi = 3.14
    def __init__(self, radius):
        self.radius = radius
circle1 = Circle(5)
circle2 = Circle(10)
print(circle1.pi)  # 输出:3.14
print(circle2.pi)  # 输出:3.14
print(Circle.pi)  # 输出:3.14

在上述示例里,我们定义了一个称作 Circle 的类,且在类的顶端声明了一个类属性 pi 。接着我们创建了两个 Circle 的实例,分别是 circle1 和 circle2 ,然后访问了它们的 pi 属性。因为这些实例没有与之同名的实例属性,所以它们都呈现出类属性 pi 的值。

实例属性

init()方法会为该实例初始化属性。

让我们来看一个示例:

class Student:
初始化自身,传入姓名和年龄这两个参数。 其中一个参数名为 name,另一个参数名为 age。 此方法用于创建对象并进行相关初始化操作。 它会根据传入的姓名和年龄来设置对象的相应属性。 这样在后续使用对象时,可以通过这些属性来获取和操作相关信息。
        self.name = name
        self.age = age
创建了一个名为 student1 的对象,该对象是 Student 类的实例,其名字为 "Alice",年龄为 20 。
student2 = Student("Bob", 25)
输出学生 1 的名字,即输出:Alice
print(student1.age)  # 输出:20
输出学生 2 的名字,即 Bob。具体为打印 student2 的 name 属性,其结果为 Bob。
print(student2.age)  # 输出:25

在上述示例里,我们定义了一个类叫 Student ,接着在 init() 方法里把实例属性 name 和 age 进行了初始化。我们构建了两个 Student 的实例,分别是 student1 和 student2 ,并且分别对它们的 name 属性和 age 属性进行了访问。

init()内外的变量差异

类属性既可以通过类名访问,也可以通过实例访问。

让我们来看一个示例,进一步说明这个差异:

class Car:
    color = "red"
    def __init__(self, brand):
        self.brand = brand
    def get_color(self):
        return self.color
定义一个方法 set_color,该方法接收一个参数 new_color
        self.color = new_color
car1 = Car("Toyota")
输出 car1 获取到的颜色,结果为 red 。
car2 = Car("BMW")
car2.set_color("blue")
输出汽车 car2 的颜色,结果为 blue 。具体来说,通过调用 car2 的 get_color() 方法,获取到了其颜色信息,该信息为 blue 。
print(car1.get_color())  # 输出:red

在上述示例里,我们定义了一个称作 Car 的类,且在类定义的最上方声明了一个类属性为 color。在 init()方法的内部,我们定义了一个实例属性是 brand。我们构建了两个 Car 的实例,分别是 car1 和 car2,并且分别对它们的 color 属性进行了访问。

调用 car2 的 set_color()方法后,我们将 car2 的 color 属性值修改为“blue”。然而,car1 的 color 属性依旧保持着原来的“red”值。因为 color 属于类属性,当我们借助 car2 去访问 color 属性时,会在实例层面创建一个名为 color 的新的实例属性,接着把它赋值为“blue”。并且不会对类属性 color 的值进行修改。

总结

在 Python 中,类属性是和类本身相联系的属性,能够通过类名或者实例去进行访问。并且实例属性是与类的实例相关联的属性,仅能通过实例来访问。init()方法属于特殊的方法,其作用是在创建类的实例的时候对对象的属性进行初始化。在 init()方法内部所定义的变量是实例属性,然而在 init()方法外部定义的变量则是类属性。了解类属性与实例属性存在差异,这对于正确运用 Python 类和实例而言是很重要的。

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读