【发布时间】:2015-04-25 02:01:48
【问题描述】:
我想知道如果没有定义名称,为什么类的方法不查看其封闭范围。
def test_scope_function():
var = 5
def print_var():
print(var) # finds var from __test_scope_function__
print_var()
globalvar = 5
class TestScopeGlobal:
var = globalvar # finds globalvar from __main__
@staticmethod
def print_var():
print(TestScopeGlobal.var)
class TestScopeClass():
var = 5
@staticmethod
def print_var():
print(var) # Not finding var, raises NameError
test_scope_function()
TestScopeGlobal.print_var()
TestScopeClass.print_var()
我希望TestScopeClass.print_var() 打印5,因为它可以在TestScopeClass 正文中读取classvar。
为什么会有这种行为?我应该在docs 中阅读什么来了解它。
【问题讨论】:
标签: python python-3.x scope