Python self:我是否必须将self传递给函数来引用self?

dtc*_*dtc 0 python

问题令人困惑.这是一个例子.

class some_class():
  some_var = 5
  def some_fun(self):
     def another_fun():
         return self.some_var
Run Code Online (Sandbox Code Playgroud)

这没关系吧?我没有:another_fun(self)给自己打电话?我实际测试了它,它的工作原理.我只想澄清一些,因为它让我有点不确定.

rod*_*igo 5

在你的情况下,它是不需要的,因为another_fun它嵌套在其他函数中,因此它从该函数中捕获本地名称,包括self.实际上,任何可从中some_fun访问的名称也可以从中访问another_fun.

有些人称之为闭包,编写创建函数的函数非常棒.经典的例子是:

def MultiplyBy(x):
    def M(y):
        return x * y
    return M

Double = MultiplyBy(2)
Triple = MultiplyBy(3)

print Double(10), Triple(10)
Run Code Online (Sandbox Code Playgroud)

那将打印出来20 30.