目的是什么self在python?我知道它是指从该类创建的特定对象实例。但是,为什么每种方法都需要将其明确添加为参数呢?

为了说明,在Ruby中,我可以做到这一点:

class MyClass
    def func(name)
        @name = name
    end
end

但是,在Python中,我需要包括self

class MyClass:
    def func(self, name):
        self.name = name

答案

您需要使用的原因self.是因为Python不使用@语法要参考实例属性。Python决定以使该方法属于的实例的方式进行方法通过 自动,但不是已收到 自动:方法的第一个参数是调用方法的实例。这使方法与函数完全相同,并将实际名称留给您(尽管self是惯例,当您使用其他东西时,人们通常会皱眉。)self对于代码并不特别,它只是另一个对象。

Python本可以做其他事情以将正常名称与属性区分开 - 像Ruby一样的特殊语法,或者需要C ++和Java之类的声明,或者可能更不同 - 但事实并非如此。Python的全部是使事物明确的,使它显而易见,尽管它并不完全在任何地方做到这一点,但它确实做到了,例如属性。这就是为什么分配给实例属性需要知道要分配的实例的原因,这就是为什么它需要self.

来自: stackoverflow.com