关于python:为什么总是将self作为类方法的第一个参数?

Why always add self as first argument to class methods?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Why do you need explicitly have the"self" argument into a Python method?

我理解为什么self总是类方法的第一个参数,这是完全有意义的,但是如果总是这样,那么为什么要为每个方法定义输入if呢?为什么不做一些幕后自动完成的事情呢?

是为了清楚起见,还是有一种情况下你可能不想把自己作为第一个论点传给别人?


因为显式比隐式好。通过使参数成为显式需求,可以简化代码理解、内省和操作。它在python常见问题解答中进一步扩展。

此外,还可以定义类方法(以类代替实例作为第一个参数),并且可以定义静态方法(根本不接受"第一个"参数):

1
2
3
4
5
6
7
8
9
10
11
class Foo(object):
    def aninstancemethod(self):
        pass

    @classmethod
    def aclassmethod(cls):
        pass

    @staticmethod
    def astaticmethod():
        pass


吉多在这里解释过。基本上,方法是函数,函数不应该接受任何"隐藏"的参数,否则高阶的设施,如装饰师,将无法以合理的方式处理它们。