0

このように関連する const を定義するのは 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

はい、クラス名に ALL_CAPS を使用しないことを除けば、かなり Pythonic だと思います。

また、末尾のコンマのポイントもわかりません。

最後に、個人的には、定数を同じ行にまとめるのではなく、1 行に 1 つの定数を定義することをお勧めします。

詳細については、Python で定数を作成する方法を参照してください。

于 2013-03-24T10:58:51.897 に答える