我有一个Enum。
from enum import Enum
class AuthMixin(Enum):
if 'Production' in utils.whichBranch():
#PRODUCTION
mongoport = os.environ.get("MONGO_PORT")
......
我试图用另一个脚本调用它。
....
import mylib.python.auth as a
import redis
auth = a.AuthMixin()
....
这是一个不行......这是我的错误:
Traceback (most recent call last):
......
auth = a.AuthMixin()
TypeError: __call__() takes at least 2 arguments (1 given)
我不明白我还必须添加什么。 在理解上给我上学。
编辑:
我认为即时了解......
"Even though we use the class syntax to create Enums,
Enums are not normal Python classes. See How are Enums different?
for more details." - [https://pypi.python.org/pypi/enum34][1]
答案 0 :(得分:1)
注意,可以实例化Enum,但实际上是实例化Enum对象以创建Enum Member的单个实例。为此,您需要在枚举中传递成员的索引。
参考Programmatic access to enumeration members and their attributes
此外,您尝试使用Enum的方式很奇怪。 枚举器,用于枚举绑定到常量值的一组唯一名称。
根据您的用法,我理解,您实际上从未打算实例化AuthMixin
,而是想要枚举的别名,并且作为一个特例和您的示例的用例将有点像这样
auth = a.AuthMixin
print auth.mongoport #Access the Enumerator
答案 1 :(得分:-1)
我认为enum类有一个带有param的“_ init _(param)”函数。