假设当前代码使用字符串作为参数,并且您希望记录它们的有效值.
例
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/