我在同一个目录中有三个 Python 模块。其中两个文件是我试图访问的类。我的印象是,如果我的一个模块(称为枚举)中有以下代码:
class Directions:
UP = 1
DOWN = 2
LEFT = 3
RIGHT = 4
class Colors:
RED = [255, 0, 0]
我可以使用以下语句:
from enum import Directions
from enum import Colors
能够像这样访问类成员:
foo = DOWN
bar = RED
但是,我必须这样访问它们
foo = Directions.DOWN
bar = Colors.RED
否则会产生错误。有什么方法可以使用 import/from-import 语句来访问我的类成员而不必指定类名?或者我应该以不同的方式组织我的“枚举”吗?
请您参考如下方法:
除了类定义内部之外,不可能从任何地方的代码直接访问类成员。
尝试将枚举模块更改为以下内容:
__all__ = ['UP', 'DOWN', 'LEFT', 'RIGHT', 'RED']
# Directions
UP = 1
DOWN = 2
LEFT = 3
RIGHT = 4
# Colors
RED = [255, 0, 0]
然后在您想要访问这些变量的模块中使用 from enum import *。
在这里定义 __all__ 不是必需的,但无论如何使用它是一种很好的做法。它控制使用 from foo import * 时导入的名称。
