根据PEP8规范,常量类属性的命名风格应该是大写还是小写?

12

我非常喜欢遵循标准的编码风格,但对于这个问题找不到答案。

class Card:
    """Card class representing a playing card."""
    RANKS = (None, 'Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10',
             'Jack', 'Queen', 'King')
    SUITS = ('Clubs', 'Spades', 'Diamonds', 'Hearts')

    def __init__(self, rank, suit):
        self.rank = rank
        self.suit = suit

    def __str__(self):
        return f"{Card.RANKS[self.rank]} of {Card.SUITS[self.suit]}"


c = Card(1, 1)
print(c)

我应该将常量写在类属性中使用小写字母还是大写字母? PEP8只规定模块级别的常量应该全部使用大写字母。那么对于类呢?

2个回答

13

PEP8 明确指出常量应该使用大写字母:

常量

通常在模块级别定义并使用所有大写字母和下划线分隔单词。例如 MAX_OVERFLOW 和 TOTAL。

请注意,它只是说这些常量通常被定义在模块级别上。但如果您的值应该被视为常量,则将它们设置为大写字母 - 即使它们是在类级别上定义的。


6
为什么不像这样在模块中提取类外部的内容:
from enum import Enum

class Suit(Enum):
    CLUBS = 1
    SPADES = 2
    DIAMONDS = 3
    HEARTS = 4

然后你可以像这样使用它:
Card(Rank.1, Suit.SPADES)

根据下面的Python文档,即使在类中,也应该使用ALL_CAPS。这对我来说也很有意义。
更多信息和示例请参见此处

使用“枚举”是个好主意 - 我真的不知道为什么我倾向于避免/忘记它们。 - MSeifert
2
Python 3.10的枚举文档也提到了这一点,可以被视为一个微妙的风格指南来解决这个问题:“注意:枚举成员的大小写。因为枚举用于表示常量,我们建议使用大写字母命名枚举成员,并将在我们的示例中使用该样式。” - Olúwátóósìn Anímáṣahun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接