大锤python日记(如何使用类属性和类方法)

203 阅读2分钟

一个使用类方法和类属性的例子:

class Car:
    num_wheels = 4   # 类属性,表示所有汽车都有四个轮子

    def __init__(self, make, model, year):
        self.make = make     # 实例属性,表示汽车品牌
        self.model = model   # 实例属性,表示汽车型号
        self.year = year     # 实例属性,表示汽车生产年份

    def honk(self):
        print("Beep beep!")  # 实例方法,表示按喇叭

    @classmethod
    def set_num_wheels(cls, num):
        cls.num_wheels = num  # 类方法,用于设置所有汽车的轮子数

# 创建两辆汽车
car1 = Car("Toyota", "Camry", 2018)
car2 = Car("Honda", "Accord", 2020)

# 访问实例属性
print(car1.make)    # 输出"Toyota"
print(car2.year)    # 输出2020

# 调用实例方法
car1.honk()         # 输出"Beep beep!"

# 访问类属性
print(Car.num_wheels)   # 输出4

# 调用类方法来修改类属性
Car.set_num_wheels(3)

# 再次访问类属性
print(Car.num_wheels)   # 输出3

这个例子定义了一个Car类,它包含了实例属性、实例方法、类属性和类方法。其中,

  • num_wheels是一个类属性,表示所有汽车都有四个轮子。
  • __init__方法是一个构造函数,用于初始化实例属性makemodelyear
  • honk方法是一个实例方法,用于按喇叭发出声音。
  • set_num_wheels是一个类方法,用于设置所有汽车的轮子数。

在主程序中,我们创建了两辆汽车car1car2,并分别访问了它们的实例属性makeyear,调用了它们的实例方法honk,以及访问了类属性num_wheels。然后,我们使用类方法set_num_wheels将所有汽车的轮子数设置为3,并再次访问了类属性num_wheels

注意事项:

  • 类属性是所有对象共享的,在对其进行修改时要谨慎,以避免影响到其他对象。
  • 类方法可以访问类属性,并且可以修改类属性的值,但不能直接访问实例属性或调用实例方法。如果需要操作实例属性或方法,可以通过创建对象来实现。
  • 实例属性和实例方法只能由具体的对象访问和调用,不能通过类名直接访问或调用。