最佳答案
在集成一个我以前从未使用过的 Django 应用程序时,我发现了两种在类中定义函数的不同方法。作者似乎既独特又有意地使用了它们。第一个是我自己经常使用的:
class Dummy(object):
def some_function(self, *args, **kwargs):
# do something here
# self is the class instance
The other one is the one I never use, mostly because I do not understand when and what to use it for:
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
这只是为了清晰起见,还是我错过了最重要的部分: 没有它就无法完成的幽灵般迷人的事情?