<分区>
@classmethod
和 python 中的“经典”方法有什么区别,
什么时候应该使用 @classmethod
什么时候应该使用 python 中的“经典”方法。
类方法是否必须是引用类的方法(我的意思是它只是处理类的方法)?
我知道@staticmethod 和经典方法有什么区别 谢谢
标签 python
<分区>
@classmethod
和 python 中的“经典”方法有什么区别,
什么时候应该使用 @classmethod
什么时候应该使用 python 中的“经典”方法。
类方法是否必须是引用类的方法(我的意思是它只是处理类的方法)?
我知道@staticmethod 和经典方法有什么区别 谢谢
最佳答案
假设您有一个 Car
类,它代表您系统中的 Car
实体。
classmethod
是一种适用于类 Car
的方法,而不适用于 Car
的任何一个实例。因此,用 @classmethod
修饰的函数的第一个参数通常称为 cls
,因此是类本身。示例:
class Car(object):
colour = 'red'
@classmethod
def blue_cars(cls):
# cls is the Car class
# return all blue cars by looping over cls instances
函数作用于类的特定实例;通常称为 self
的第一个参数是实例本身:
def get_colour(self):
return self.colour
总结:
使用 classmethod
实现适用于整个类(而不是特定类实例)的方法:
Car.blue_cars()
使用实例方法来实现适用于特定实例的方法:
my_car = Car(colour='red')
my_car.get_colour() # should return 'red'
关于python - @classmethod 和 python 中方法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17965282/