下面的代码用python2、python3、jython和pypy打印a1 m
。因此,我认为这是一种被通缉的行为。但是,我不明白为什么在C1
类作用域x
中使用周围的函数作用域进行求值,而在C2
中,下面的x = x
使前面的x
使用周围的模块作用域进行求值。你知道吗
x = "m"
def a1():
x = "a1"
class C1(object):
print(x)
a1()
def a2():
x = "a2"
class C2(object):
print(x)
x = x
a2()
在一个附加的内部函数中使用x = x
行是一个语法错误,这很好。但是在一个函数的内部类中,这似乎是可以接受的,尽管语义很奇怪?你知道吗
在类定义中定义变量时,实际上是在指定该类的属性,但在引用变量时,可以引用类或外部变量的属性。因此,当你说
x = x
时,它和说C2.x = x
是一样的相关问题 更多 >
编程相关推荐