如何在Python中记录和使用类似枚举的数据类型?

时间:2011-09-23 09:44:13

标签: python enums doxygen

假设当前代码使用字符串作为参数,并且您希望记录它们的有效值。

实施例

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

现在的问题是如何改进这个设计以解决两个问题:

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

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

2 个答案:

答案 0 :(得分:5)

这是一个类似的问题: 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的观点相反,我一直都在使用......我猜的是旧的java习惯。)

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

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

如果您很好奇为什么Python中没有枚举类型,您可以查看PEP:

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

答案 1 :(得分:1)