2011-09-23 29 views
4

我们假设当前代码正在使用字符串作为参数,并且您想记录它们的有效值。如何在Python中编写和使用枚举类数据类型?

def MyFunc(region = None): 
    if region in ['A','B','C', None]: 
     # dosomething 
    else: 
     # complain about invalid parameter 

现在的问题是我怎么能为了解决两个问题改进这一设计:

  • 能够使用在IDE中的自动完成功能,自动 - 完成参数的可能值。

  • 文件有效值的参数列表(使用doxygen的当前代码记录)

+0

IDE自动完成是浪费时间。在那里,我说了。更重要的是,请解释为什么区域是一个字符串。列举这样的值有很多选择。你为什么选择一个字符串? –

回答

4

这里有一个类似的问题: How can I represent an 'Enum' in Python?

这表明实施类似:

class MyClass : 
    A = 0 """The Letter A""" 
    B = 1 """The Letter B""" 
    C = 2 """The Letter C""" 
    D = 3 """The Letter D""" 

variable = MyClass.A # Ok 
variable = MyClass.E # Error 

有了这个,您可以获得IDE自动完成。 (这与S.Lott的观点相反,我一直都在使用......我猜测这是老习惯)。

使用文档字符串来重现显而易见的风格被认为是糟糕的,我认为在这种情况下会使代码的可读性变差。有关文档字符串的更多信息:

http://www.python.org/dev/peps/pep-0257/

如果你很好奇为什么在Python中没有枚举类型,你可以检查出PEP:

http://www.python.org/dev/peps/pep-0354/