【问题标题】:Error defining Enum in class: TypeError: 'module' object is not callable在类中定义枚举时出错:TypeError:“模块”对象不可调用
【发布时间】:2018-11-28 22:51:14
【问题描述】:

我有一个包含模块的 Python 包:

我的包

|----> 我的模块

我想将枚举定义为模块的静态属性。 我在 Houdini 中使用 Python 2.7 的 enum34 模块

#myModule.py
from enum import Enum
class DebugStates(Enum):
    release = 1
    debug = 2

然后我尝试在另一个 Python 文件中导入 myModule:

#OtherPython.py
from myPackage import myModule

在 Houdini 启动时执行。这执行没有错误,但是当我尝试启动 Python 控制台时,我得到了这个错误并且 Houdini 崩溃了:

"Traceback (most recent call last):
  File \"<stdin>\", line 1, in <module>
TypeError: 'module' object is not callable
"

【问题讨论】:

  • @DyZ:我不太确定这是否适用于此。发布的代码中没有一个模块被调用。
  • 这个错误报告看起来相关:github.com/pyQode/pyQode/issues/59
  • @MartijnPieters 但是看看答案有 54 个赞(倒数第三个)?
  • @DyZ:但这里没有使用myModule()的代码。这个类被命名为DebugStates。还有其他关于 Houdini 问题的报告。
  • @DyZ:此外,回溯显示异常是由从标准输入读取的内容引起的,而不是从模块中读取的。该行没有显示源代码。这看起来像一个普通的案例。前提是这里确实没有涉及其他代码。

标签: python python-2.7 enums houdini


【解决方案1】:

Le sigh,我刚刚想通了,我正在更改我的模块名称以保护我的问题中的无辜者。在现实生活中,我试图将我的模块称为“全局变量”,认为该包将充当命名空间边界。显然不是个好主意。

【讨论】:

  • 是的,globals() 在很多地方都会被调用。
猜你喜欢
  • 1970-01-01
  • 2017-06-17
  • 2014-09-21
  • 2011-05-30
  • 2021-11-22
  • 1970-01-01
相关资源
最近更新 更多