在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
答案 0 :(得分:10)
显然,基于类的常量属于类。坚持你的第二个例子。请记住,PEP8不是全能者传下来的。这只是好主意:传统,理性和经验可以缓和经文的含义。
Hungrarian_prefix_notation是不必要的。这是你上课的一个原因。
答案 1 :(得分:0)
谁消耗常数?你说“我正在编写一个模块,但是,常量都与各个类有关。”所以把常数放在课堂上。