0

像这样定义相关的常量是pythonic吗?

定义:

class LinkChoices(object):
    FOLLOW, FRIENDSHIP, CLOSE_FRIENDSHIP, = 10, 20, 30,

使用:

from  some_module import LinkChoices

link.status = LinkChoices.FOLLOW

像这样定义 const 有什么缺点吗?

4

2 回答 2

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”。我宁愿不说。

于 2013-03-24T11:33:59.613 回答
1

是的,我认为它非常 Pythonic,除了我不会使用 ALL_CAPS 作为类名。

我也没有看到尾随逗号的意义。

最后,我个人可能会为每行定义一个常量,而不是将它们集中在同一行上。

有关进一步的讨论,请参阅如何在 Python 中创建常量

于 2013-03-24T10:58:51.897 回答