Python跨模块变量

1 投票
1 回答
1119 浏览
提问于 2025-04-16 11:41

我知道还有其他讨论这个问题的帖子,但因为我对“类”还比较陌生,而且已经搭建好了我的类结构……所以我想找一个可以直接融入我代码的方法。我相信这个问题的答案不会太难!

第一个文件: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

NameVarNameAssign 中没有定义;它只在 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

撰写回答