为什么总是将self作为类方法的第一个参数添加?

时间:2012-10-14 12:42:36

标签: python class methods class-method

  

可能重复:
  Why do you need explicitly have the “self” argument into a Python method?

我理解为什么self总是总是类方法的第一个参数,这总是有意义的,但如果总是如此,那么为什么要为每个方法定义经历打字的麻烦?为什么不在幕后自动完成呢?

是为了清楚还是在某种情况下你可能不想将自己作为第一个参数传递?

2 个答案:

答案 0 :(得分:31)

因为显性优于隐式。通过使参数成为明确的要求,您可以简化代码理解,内省和操作。它在Python FAQ中进一步扩展。

此外,您可以定义类方法(将类而不是实例作为第一个参数),并且您可以定义静态方法(根本不要使用'第一个参数):

class Foo(object):
    def aninstancemethod(self):
        pass

    @classmethod
    def aclassmethod(cls):
        pass

    @staticmethod
    def astaticmethod():
        pass

答案 1 :(得分:15)

圭多解释说here。基本上,方法是函数,函数不应该接受任何“隐藏”参数,否则高级设施(如装饰器)将无法以合理的方式处理它们。