📅  最后修改于: 2023-12-03 15:19:26.827000             🧑  作者: Mango
在Python中,cls
是一个特殊变量,代表类本身。它通常用于类方法和类属性中,允许我们访问和修改类的状态和行为。
类方法是绑定到类而不是实例的方法。它们经常用于创建类的实例、访问类级别属性和修改类状态。在类方法的第一个参数中,我们可以使用cls
来访问类本身,这样我们就能够修改类级别的属性,而不是实例级别的属性。
class Car:
wheels = 4
@classmethod
def update_wheels(cls, wheels):
cls.wheels = wheels
car1 = Car()
print(car1.wheels) # output: 4
Car.update_wheels(6)
car2 = Car()
print(car2.wheels) # output: 6
在上面的例子中,我们使用classmethod
来定义了一个类方法update_wheels
,它接收一个cls
参数,用于更新类级别的属性wheels
。在代码的最后,我们可以看到,尽管我们没有直接修改car1
或car2
实例的wheels
属性,但wheels
属性还是被更新了。
类属性是在所有实例之间共享的属性。当我们在实例中调用一个类属性时,Python会首先查找实例本身是否有此属性。如果没有,则会转而查找类本身是否有此属性。在类属性中,我们可以通过cls
来访问和修改类级别的属性。
class Dog:
legs = 4
def __init__(self, name):
self.name = name
dog1 = Dog("Bingo")
dog2 = Dog("Charlie")
print(dog1.legs) # output: 4
print(dog2.legs) # output: 4
Dog.legs = 3
print(dog1.legs) # output: 3
print(dog2.legs) # output: 3
在上面的例子中,我们定义了一个类属性legs
,它是在所有实例之间共享的。当我们在实例中调用legs
属性时,Python会首先从实例中查找,但由于实例中没有此属性,因此它转而查找类级别的legs
属性。最后,我们通过直接修改Dog
类的legs
属性,更新了所有实例的legs
属性。
在Python中,cls
变量是一个特殊的变量,它代表类本身。我们可以在类方法和类属性中使用它,访问和修改类级别的状态和行为。利用cls
变量,我们可以更灵活地控制Python中的类。