为什么Django需要引入装饰器classonlymethod
为什么它不能重用python classmethod

最佳答案

最好的解释是the source code本身:

class classonlymethod(classmethod):
    def __get__(self, instance, cls=None):
        if instance is not None:
            raise AttributeError("This method is available only on the class, not on instances.")
        return super().__get__(instance, cls)
区别在于可以在实例上调用 classmethod ,其效果与在类上调用的效果相同,但是classonlymethod仅可以在类上调用。

10-08 14:34