【问题标题】:Python Cross Module VariablesPython 跨模块变量
【发布时间】:2011-06-25 23:18:40
【问题描述】:

我意识到还有其他线程可以解决这个问题,但由于我对“类”还很陌生,并且已经构建了我的类结构......我想找到一种可以集成到我的代码中的方法。我相信这不会是一个难以回答的问题!

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

非常感谢所有回复...

【问题讨论】:

  • 如果伊格纳西奥的回答对你有用,你应该接受它。

标签: python variables module


【解决方案1】:

NameVar 没有在NameAssign 中定义;它仅作为局部变量存在于NameAssign.NameWorks.InputNames() 中。解决此问题的最简单方法是在全局级别的 NameAssign 中定义它。

编辑:

原来这是你想做的:

名称结果.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

【讨论】:

  • 太好了,我在哪里/如何将其定义为全局。我试过把'global NameVar'放在所有地方,它只是返回:SyntaxError: name 'NameVar' is parameter and global
  • 不是“作为全局”,在全局级别,即与 NameWorks 处于同一级别。
  • 这可能是“我刚接触课程”的地方。我可以举一两行代码为例
  • 这与类无关。 NameVar = ['harry', 'betty', 'sam']
  • 哦,好的。我知道了。我想在类内的列表变量中记录三个名称:NameWorks 并将该列表变量导入 NameResult.py
猜你喜欢
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 2016-10-20
  • 2010-09-13
  • 2018-02-02
相关资源
最近更新 更多