像这样定义相关的常量是pythonic吗?
定义:
class LinkChoices(object):
FOLLOW, FRIENDSHIP, CLOSE_FRIENDSHIP, = 10, 20, 30,
使用:
from some_module import LinkChoices
link.status = LinkChoices.FOLLOW
像这样定义 const 有什么缺点吗?
像这样定义相关的常量是pythonic吗?
定义:
class LinkChoices(object):
FOLLOW, FRIENDSHIP, CLOSE_FRIENDSHIP, = 10, 20, 30,
使用:
from some_module import LinkChoices
link.status = LinkChoices.FOLLOW
像这样定义 const 有什么缺点吗?
正如链接线程中所建议的那样,您也可以采取防御措施并采取措施防止意外重新定义常量,例如:
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”。我宁愿不说。
是的,我认为它非常 Pythonic,除了我不会使用 ALL_CAPS 作为类名。
我也没有看到尾随逗号的意义。
最后,我个人可能会为每行定义一个常量,而不是将它们集中在同一行上。
有关进一步的讨论,请参阅如何在 Python 中创建常量