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