在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