在集成我以前没有使用过的 Django 应用程序时,我发现了两种不同的方法来定义类中的函数。作者似乎既独特又有意地使用它们。第一个是我自己经常使用的:
class Dummy(object):
def some_function(self, *args, **kwargs):
# do something here
# self is the class instance
另一个是我从不使用的,主要是因为我不明白何时以及将其用于什么用途:
class Dummy(object):
@classmethod
def some_function(cls, *args, **kwargs):
# do something here
# cls refers to what?
python文档中的classmethod
装饰器说:
类方法接收类作为隐式第一个参数,就像实例方法接收实例一样。
所以我猜cls
是指Dummy
它自己(class
不是实例)。我不完全理解为什么会这样,因为我总是可以这样做:
type(self).do_something_with_the_class
这只是为了清楚起见,还是我错过了最重要的部分:没有它就无法完成的怪异和迷人的事情?