python - @classmethod 和 python 中方法的区别

标签 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

总结:

  1. 使用 classmethod 实现适用于整个类(而不是特定类实例)的方法:

    Car.blue_cars()
    
  2. 使用实例方法来实现适用于特定实例的方法:

    my_car = Car(colour='red')
    my_car.get_colour() # should return 'red'
    

关于python - @classmethod 和 python 中方法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17965282/

相关文章:

python - 根据第三列设置列中具有共同值的行的日期

Python Flask使用pdfkit将生成的pdf上传到AWS S3而不将其保存到文件夹

Python:**args 而不是重载?

python - Python PEG 中 bitwise_or 的目的是什么?

python - python Canvas 中的负坐标

python - Sublime 颜色 Python 文档字符串与单行字符串不同吗?

python - if 里面的条件

python - 我应该使用什么模式来打印以下代码的日期、时间和进程 ID?

python - 过滤 NetworkX 图以列出来自具有特定属性的节点的所有边

python - HDF5格式的时间序列存储