类特定的"常量"是否仍应在模块级别声明?

Ben*_*ank 8 python naming-conventions

PEP 8中,它声明"常量通常在模块级[...]上定义".这对于标准库是有意义的,其中常量倾向于涉及整个模块而不是特定类(例如zlib.MAX_WBITSre.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
Run Code Online (Sandbox Code Playgroud)

......以及我目前的"以班级为基础"的风格......

def Chunk(object):
    SIZE_X = 16
    SIZE_Z = 16

    # magic happens here

def Region(object):
    SIZE_X = 32
    SIZE_Z = 32

    # magic happens here
Run Code Online (Sandbox Code Playgroud)

S.L*_*ott 10

显然,基于类的常量属于类.坚持你的第二个例子.请记住,PEP8不是全能者传下来的.这只是好主意:传统,理性和经验可以缓和经文的含义.

Hungrarian_prefix_notation是不必要的.这是你上课的一个原因.