【问题标题】:Python : NameError: global name 'GetText' is not definedPython:NameError:未定义全局名称“GetText”
【发布时间】:2013-05-08 08:19:28
【问题描述】:

我已经被这个错误困扰了几个小时了。不知道出了什么问题。下面是一段代码

NameError:未定义全局名称“GetText”

class BaseScreen(object):

    def GetTextFromScreen(self, x, y, a, b, noofrows = 0):
        count = 0
        message = ""        
        while (count < noofrows):
            line = Region(self.screen.x + x, self.screen.y + y + (count * 20), a, b)
            message = message + "\n" + line.text()
            count += 1            
        return message

class HomeScreen(BaseScreen):

    def GetSearchResults(self):
        if self.screen.exists("Noitemsfound.png"):
            return 'No Items Found'
        else:
            return self.GetTextFromScreen(36, 274, 680, 20, 16)

class HomeTests(unittest.TestCase):

    def test_001S(self):
        Home = HomeScreen()
        Home.ResetSearchCriteria()
        Home.Search("0009", "Key")
        self.assertTrue("0009" in Home.GetSearchResults(), "Key was not returned")

Basescreen 类具有适用于不同屏幕的所有可重用方法。
Homescreen 继承 Basescreen
HomeTests 测试用例类中,最后一步是Home.GetSearchResults(),它依次调用基类方法和错误。

注意:
我有另一个 screenclass 和 testcaseclass 做同样的事情,没有问题。

我已经检查了所有的导入语句并且没问题

错误消息中的“GetText”是最初的方法名称,之后我将其更改为GetTextFromScreen

错误消息仍然指向代码中的第 88 行,该行不再存在。模块导入/重新加载问题?

【问题讨论】:

  • “错误消息仍然指向代码中的第 88 行,但不再存在。模块导入/重新加载问题?”是的。点/显示将显示当前文件,即使您尚未运行它。您必须重新加载/重新导入才能获取新文件。
  • 谢谢。我只用了大约一周的python。它现在工作。您能否告诉我为什么会发生这种情况以及将来如何避免这种情况。?非常感谢
  • 我的脚本开头有 import 语句。我希望每次运行脚本时都会导入它。不知道重新加载。谢谢。
  • 如果我的回答帮助您理解了问题,请随时投票或选择带有复选标记的答案。谢谢!

标签: python


【解决方案1】:

尝试清除您的 *.pyc 文件(或 __pycache__,如果使用 3+)。

【讨论】:

    【解决方案2】:

    你问:

    错误消息仍然指向代码中的第 88 行,该行不再存在。模块导入/重新加载问题?

    是的。回溯(错误消息)将显示当前(最新保存的)文件,即使您还没有运行它。您必须重新加载/重新导入才能获取新文件。

    差异来自这样一个事实,即从保存在驱动器上的脚本文件 (scriptname.py) 读取回溯打印输出。但是,程序可以从保存在内存中的模块运行,有时也可以从 .pyc 文件运行。如果您通过更改脚本来修复错误并将其保存到驱动器中,那么如果您不重新加载它,仍然会出现同样的错误。

    如果您以交互方式运行测试,您可以使用reload 函数:

    >>> import mymodule
    >>> mymodule.somefunction()
    Traceback (most recent call last):
      File "mymodule.py", line 3, in somefunction
        Here is a broken line
    OhNoError: Problem with your file
    

    现在,您修复错误并保存 mymodule.py,返回到您的交互式会话,但您仍然收到错误,但回溯显示固定行

    >>> mymodule.somefunction()
    Traceback (most recent call last):
      File "mymodule.py", line 3, in somefunction
        Here is the fixed line
    OhNoError: Problem with your file
    

    所以你必须重新加载模块:

    >>> reload(mymodule)
    <module 'mymodule' from '/path/to/mymodule.py'>
    >>> mymodule.somefunction()
    Success!
    

    【讨论】:

      猜你喜欢
      • 2015-07-19
      • 2013-12-12
      • 1970-01-01
      • 2013-07-07
      • 2011-05-03
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多