我很惊讶方法中函数参数的命名空间是类而不是全局范围。你知道吗
def a(x):
print("Global A from {}".format(x))
class Test:
def a(self, f=a):
print("A")
f("a") # this will call the global method a()
def b(self, f=a):
print("B")
f("b") # this will call the class method a()
t=Test()
t.b()
怎么解释?如何从b的参数中访问全局a()?你知道吗
命名空间查找总是首先检查本地范围。在方法定义中,就是类。你知道吗
在定义
Test.a
时,没有名为a
的局部,只有全局a
。在定义Test.b
时,已经定义了Test.a
,因此本地名称a
存在,并且不检查全局范围。你知道吗如果要将
Test.b
中的f
指向全局a
,请使用:哪个指纹
一如预期。你知道吗
相关问题 更多 >
编程相关推荐