为什么我不能正确导入这个枚举?

时间:2014-09-28 04:31:03

标签: python enums

我有一个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]

2 个答案:

答案 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)”函数。