在Python 3中设置一系列字符串常量

时间:2014-09-12 12:21:45

标签: python attributes

我的代码中有一个类处理显示输出。需要在本课程中设置一系列颜色,画笔和笔,但我不确定如何。

  1. 我应该将它们设置为单独的类属性吗?

    GREEN = '#00ff00'
    BLUE = '#0000ff'
    RED = '#ff0000'
    
  2. 我应该将它们添加到字典中吗?

    colours = {'GREEN': '#00ff00',
               'BLUE': '#0000ff',
               'RED': '#ff0000'}
    
  3. 我应该遍历它们并使用实例的__setattr__方法分配所有方法吗?

    for k, v in colours.items():
        mydraw.__setattr__(k, v)
    
  4. module.item访问这些属性并不常见;例如logging.WARNwx.HORIZONTAL?另外,我应该在类或模块中设置它们吗?

2 个答案:

答案 0 :(得分:1)

根据样式指南,PEP-0008(强调我的):

  

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

标准库中有各种各样的例子,例如loggingtkinterre

答案 1 :(得分:0)

从python 3.4开始,您可以继承类enum,如下所示:

from enum import Enum

class Colour(Enum):
    GREEN = '#00ff00'
    BLUE = '#0000ff'
    RED = '#ff0000'

然后只需输入Colour.GREEN.value,依此类推......

另一种选择,既不需要Python 3.4也不需要输入Colour.GREEN.value

def enum(**enums):
    return type('Enum', (), enums)

Colour = enum(GREEN='#00ff00', BLUE='#0000ff', RED='#ff0000')

然后Colour.GREEN评估为'#00ff00'