在python中,以下工作正常:
def test_foo():
class Foo(object):
pass
class Fam(object):
bar = Foo
test_foo()
Run Code Online (Sandbox Code Playgroud)
但是,以下内容失败NameError: name 'Foo' is not defined:
def test_foo():
class Foo(object):
pass
class Fam(object):
Foo = Foo
test_foo()
Run Code Online (Sandbox Code Playgroud)
为什么这个名字,我分配到影响多数民众赞成被分配值的查找?
您Foo在类定义中分配名称这一事实使得该名称Foo成为该范围内的本地名称(即类的范围).在解析和编译为字节代码期间,本地名称是静态确定的.当执行到达语句时
Foo = Foo
Run Code Online (Sandbox Code Playgroud)
Python首先评估右侧.它查找本地名称Foo- 在编译期间确定 - 并且无法在本地范围内找到它.因此错误.
如果你尝试,也会发生同样的事情
def test_foo():
foo = 3
class A:
bar = foo
foo = 42
test_foo()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |