如何在python中定义相关常量?

2024-06-11 22:53:44 发布

您现在位置:Python中文网/ 问答频道 /正文

像这样定义相关常量是pythonic吗?你知道吗

定义:

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

使用:

from  some_module import LinkChoices

link.status = LinkChoices.FOLLOW

这样定义常量有什么缺点吗?你知道吗


Tags: fromimportclose定义objectstatuslinksome
2条回答

正如链接线程中所建议的,您还可以采取防御措施,防止意外重新定义常量,例如:

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

不知道这是不是“Python”。我宁愿不。你知道吗

是的,我认为这是相当python,除了我不会用所有的\u大写的类名。你知道吗

我也看不出后面逗号有什么意义。你知道吗

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

有关进一步讨论,请参见How to create a constant in Python

相关问题 更多 >