为什么总是自加作为第一个参数类的方法? [重复](Why always add self as

2019-08-01 11:25发布

可能重复:
为什么你需要明确的有“自我”的说法变成一个Python的方法?

我明白为什么自己总是类方法的第一个参数,这非常有意义,但如果总是这样,那么为什么到底,如果每个方法定义输入的麻烦? 为什么不把它的东西多数民众赞成自动在幕后做了什么?

它是为清楚起见,还是有一个情况下,你可能不会想通过自己作为第一个参数?

Answer 1:

由于显式优于隐式。 通过使参数明确要求,可以简化代码的理解,反省和操纵。 它在我们进一步扩大了Python的常见问题 。

此外,你可以定义类方法(以一类,而不是实例作为第一个参数),你可以定义静态方法(不要拿“第一”的说法的话):

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

    @classmethod
    def aclassmethod(cls):
        pass

    @staticmethod
    def astaticmethod():
        pass


Answer 2:

圭多解释说, 这里 。 基本上,方法是功能,和功能不应该接受任何“隐藏”参数,否则高阶设施,如装饰,将无法以一种合理的方式来对付他们。



文章来源: Why always add self as first argument to class methods? [duplicate]