为什么Django需要引入装饰器classonlymethod
?
为什么不能重用python classmethod
?
答案 0 :(得分:42)
最好的解释可能是源代码本身:
class classonlymethod(classmethod):
def __get__(self, instance, owner):
if instance is not None:
raise AttributeError("This method is available only on the view class.")
return super(classonlymethod, self).__get__(instance, owner)
不同之处在于,可以在实例上调用classmethod
,与在类上调用它具有相同的效果,但classonlymethod
只能在类上调用。