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

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

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

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

>能够使用IDE中的自动完成功能自动完成参数的可能值.
>记录参数的有效值列表(目前使用doxygen记录代码)

解决方法:

这是一个类似的问题:
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习惯).

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

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

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

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

上一篇:php – Doxygen中的高级搜索功能?


下一篇:Linux(七):阿里云服务器基础设置及防火墙安全组设置