一个使用类方法和类属性的例子:
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__方法是一个构造函数,用于初始化实例属性make、model和year。honk方法是一个实例方法,用于按喇叭发出声音。set_num_wheels是一个类方法,用于设置所有汽车的轮子数。
在主程序中,我们创建了两辆汽车car1和car2,并分别访问了它们的实例属性make和year,调用了它们的实例方法honk,以及访问了类属性num_wheels。然后,我们使用类方法set_num_wheels将所有汽车的轮子数设置为3,并再次访问了类属性num_wheels。
注意事项:
- 类属性是所有对象共享的,在对其进行修改时要谨慎,以避免影响到其他对象。
- 类方法可以访问类属性,并且可以修改类属性的值,但不能直接访问实例属性或调用实例方法。如果需要操作实例属性或方法,可以通过创建对象来实现。
- 实例属性和实例方法只能由具体的对象访问和调用,不能通过类名直接访问或调用。