首页常见问题正文

Python类属性和实例属性的区别与用法

更新时间:2023-03-08 来源:黑马程序员 浏览量:

IT培训班

  Python类属性和实例属性是在类中定义的属性,它们的作用和范围不同。

  类属性是属于类的,不属于任何一个实例。在类中定义的变量被称为类属性,可以通过类名来访问它们,也可以通过实例名来访问。当某个实例调用类属性时,它们访问的是类属性的副本,这意味着当类属性的值发生改变时,所有实例都会受到影响。类属性通常用于保存与类相关的常量或配置信息。

  实例属性是属于实例的,只在特定的实例中存在。实例属性在实例化对象时被创建,并且只能通过实例名来访问。每个实例都拥有自己的实例属性,它们是独立的,不会相互干扰。实例属性通常用于保存实例的状态或数据,以及与该实例相关的信息。

  接下来,我们用一个示例代码,演示 Python 中的类属性和实例属性:

class Car:
    # 类属性
    wheels = 4

    def __init__(self, make, model, year):
        # 实例属性
        self.make = make
        self.model = model
        self.year = year

    def get_make(self):
        return self.make

    def get_model(self):
        return self.model

    def get_year(self):
        return self.year

    def get_wheels(self):
        return Car.wheels


# 创建两个实例对象
car1 = Car("Toyota", "Corolla", 2022)
car2 = Car("Honda", "Civic", 2021)

# 获取实例属性值
print("Car 1 make: ", car1.get_make())  # 输出:Car 1 make: Toyota
print("Car 2 model: ", car2.get_model())  # 输出:Car 2 model: Civic
print("Car 1 year: ", car1.get_year())  # 输出:Car 1 year: 2022

# 获取类属性值
print("Car wheels: ", Car.wheels)  # 输出:Car wheels: 4
print("Car 1 wheels: ", car1.get_wheels())  # 输出:Car 1 wheels: 4

# 修改实例属性值
car1.make = "Ford"
print("Car 1 make: ", car1.get_make())  # 输出:Car 1 make: Ford

# 修改类属性值
Car.wheels = 6
print("Car 1 wheels: ", car1.get_wheels())  # 输出:Car 1 wheels: 6

  在上面的示例代码中,我们定义了一个"Car"类,包含一个类属性"wheels"和三个实例属性"make"、"model"和 "year"。我们创建了两个"Car类"的实例对象"car1"和"car2",并使用实例方法获取它们的实例属性值。我们还使用了类方法获取了类属性"wheels"的值。

  接下来,我们修改了实例属性"make"的值,并将类属性"wheels"的值从4修改为6,最后使用实例方法获取了 "car1"实例对象的类属性"wheels"的值。

分享到:
在线咨询 我要报名
和我们在线交谈!