【问题标题】:Constant class attribute style according to PEP8: uppercase or lowercase?根据 PEP8 的常量类属性样式:大写还是小写?
【发布时间】:2018-01-23 22:58:00
【问题描述】:

我真的很喜欢遵循标准的编码风格,但找不到答案。

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)

我应该在类属性 all_lower_case 还是 ALL_UPPER_CASE 中写常量? PEP8 只是说常量应该是模块级别的 ALL_UPPER_CASE。上课呢?

【问题讨论】:

    标签: python class constants python-3.6 pep8


    【解决方案1】:

    为什么不像这样在模块中提取类之外的那些:

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

    然后你可以像这样使用它:

    Card(Rank.1, Suit.SPADES)
    

    此外,根据以下 Python 文档,它是 ALL_CAPS,即使在 Class 中也是如此。这对我来说也很有意义。

    More info and examples.

    【讨论】:

    • Enum 的好主意 - 我真的不知道为什么我倾向于避免/忘记它们。
    【解决方案2】:

    PEP8 明确表示常量应为大写:

    常量

    常量通常在模块级别定义,并以全部大写字母书写,并用下划线分隔单词。示例包括 MAX_OVERFLOW 和 TOTAL。

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

    【讨论】:

      猜你喜欢
      • 2015-07-29
      • 1970-01-01
      • 2023-02-11
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2015-12-27
      • 1970-01-01
      相关资源
      最近更新 更多