Python跨模块变量
我知道还有其他讨论这个问题的帖子,但因为我对“类”还比较陌生,而且已经搭建好了我的类结构……所以我想找一个可以直接融入我代码的方法。我相信这个问题的答案不会太难!
第一个文件:NameResult.py
from NameAssign import *
NameList = NameWorks()
print(NameList.InputNames(NameVar))
第二个文件:NameAssign.py
class NameWorks:
def __init__(self, NameVar = []):
self.NameVar = NameVar
def InputNames(self, NameVar):
global NameVar
NameVar = ['harry', 'betty', 'sam']
结果:
NameError: name 'NameVar' is not defined
非常感谢大家的回复……
1 个回答
4
NameVar
在 NameAssign
中没有定义;它只在 NameAssign.NameWorks.InputNames()
这个地方作为一个局部变量存在。解决这个问题最简单的方法是把它在 NameAssign
中定义为全局变量。
编辑:
结果发现,这正是你想要做的事情:
NameResult.py
import NameAssign
namelist = NameAssign.NameWorks(['harry', 'betty', 'sam'])
print namelist.InputNames() # or print(...) for Py3k
NameAssign.py
class NameWorks(object):
def __init__(self, names):
self.names = names
def InputNames(self):
return self.names