这样定义相关的consts是pythonic吗?
定义:
class LinkChoices(object):
FOLLOW, FRIENDSHIP, CLOSE_FRIENDSHIP, = 10, 20, 30,
使用:
from some_module import LinkChoices
link.status = LinkChoices.FOLLOW
是否有任何定义这样的竞争的缺点?
答案 0 :(得分:1)
是的,我认为它非常Pythonic,除了我不会使用ALL_CAPS作为类名。
我也没有在尾随逗号中看到这一点。
最后,我个人可能会在每行定义一个常量而不是将它们放在同一行上。
有关进一步的讨论,请参阅How to create a constant in Python
答案 1 :(得分:1)
正如链接线程中所建议的那样,您也可以采取防御措施并采取措施防止意外重新定义常量,例如:
def const(cls):
class _const(type):
def __setattr__(self,name,value):
raise ValueError("Can't rebind const(%s)" % name)
class _(cls):
__metaclass__ = _const
return _
@const
class LinkChoices(object):
FOLLOW, FRIENDSHIP, CLOSE_FRIENDSHIP, = 10, 20, 30,
LinkChoices.FOLLOW = 123 # raises ValueError
不知道这是不是“pythonic”。我不愿意。