请使用以下代码:
import something
def Foo():
something = something.SomeClass()
return something
......这显然不是有效的代码:
UnboundLocalError: local variable 'something' referenced before assignment
...在评估=的RHS之前,创建局部变量something但未分配。 (例如,参见相关答案的评论。)这对我来说似乎有点奇怪,但是当然,我会继续使用它。 现在,为什么以下有效代码?
class Foo(object):
something = something.SomeClass()
我的理解是class定义的内部基本上是一个范围:
The class’s suite is then executed in a new execution frame (see section Naming and binding), using a newly created local namespace and the original global namespace.
那么,为什么这些代码的行为与函数的行为不同?
something似乎有多个含义?
@Johnsyweb:是的,有点儿。 但在这两种情况下,它都具有同样的意义。 (或者,至少,我读过的所有文档似乎都是这样说的。)
从python类文档:
Class definitions place yet another n