在PEP 8中,聲明「常量通常在模塊級別上定義[...]」。這對於標準庫是有意義的,其中常數傾向於涉及整個模塊而不是特定的類(例如zlib.MAX_WBITS
或re.UNICODE
)。我目前正在編寫一個模塊,但是,常量都與各個類相關。應該在模塊級別聲明類特定的「常量」嗎?
該模塊旨在允許Python程序使用特定於應用程序的序列化格式,其中將數據塊排列爲「塊」,並將這些塊進一步排列爲「區域」。塊和區域的大小是有用的常量,我一直在做班級屬性,直到我在PEP 8中穿過那條線。
我傾向於讓它們保持原樣(PEP 8 也說「愚蠢的一致性是小心靈的大地精」,畢竟),但要確保我不會因爲這樣做而嚴重違反用戶的期望太。 (該模塊尚未發佈,所以向後兼容性不是一個問題。)
作爲參考,「PEP 8」風格。
CHUNK_SIZE_X = 16
CHUNK_SIZE_Z = 16
REGION_SIZE_X = 32
REGION_SIZE_Z = 32
def Chunk(object):
# magic happens here
def Region(object):
# magic happens here
...和我目前的「類爲主」風格...
def Chunk(object):
SIZE_X = 16
SIZE_Z = 16
# magic happens here
def Region(object):
SIZE_X = 32
SIZE_Z = 32
# magic happens here
正如我所說,我已經傾向於違反PEP。我只是想確保這樣做符合其他人的期望。聽起來像它會。 :-) – 2011-02-23 21:50:26
這甚至都不是違規行爲 - PEP 8有一個原因,就像「通常」和「一般」一樣撒滿了警告詞。 – ncoghlan 2011-02-23 22:19:46
@ncoghlan:絕對。這是我使用「全能」和「聖經」等詞語的要點。 – 2011-02-23 23:01:20