问题令人困惑.这是一个例子.
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)给自己打电话?我实际测试了它,它的工作原理.我只想澄清一些,因为它让我有点不确定.
在你的情况下,它是不需要的,因为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.