Python - 允许变量的值

时间:2016-08-29 22:15:36

标签: python enums

如何明确定义给定变量的值?假设我希望变量大小的值为&#39;小&#39; &#39; medium&#39; < / strong>,或&#39; big&#39; ,没有别的。

编辑: 我希望避免将变量设置为列表之外的某种情况(例如,在这种情况下为“微小的”)。就像Java中的枚举一样。这个变量是一个类字段。

3 个答案:

答案 0 :(得分:3)

最简单的方法是始终使用专用方法,首先验证输入,如果正确,则设置变量。您可以在下面找到一些示例:

class Test:
   def __init__(self):
      self.__variable = None

   def set_variable(self, value):
      if value not in ('small', 'medium', 'big'):
         raise ValueError()
      self.__variable = value

答案 1 :(得分:3)

您正在描述enumerationenum库支持Python:

from enum import Enum

class Size(Enum):
    small = 'small'
    medium = 'medium'
    big = 'big'

size = Size('big')
print(size)
try:
    size = Size('tiny')
except ValueError as e:
    print("invalid Size (", e.args[0].split()[0],
          "). Size must be one of 'small', 'medium' or 'big'", sep='')

<强>输出:

Size.big
invalid Size ('tiny'). Size must be one of 'small', 'medium' or 'big'

答案 2 :(得分:0)

您可以在类中定义一个Size类,然后在检查是否允许该值的同时设置size属性。下面是一个最小的示例:

from enum import Enum

class Trial:
    class Size(Enum):
        small = "small"
        medium = "medium"
        large = "large"

    def __init__(self, size):
        self._set_size(size)
 
    def _set_size(self, size):
        if size in set(item.value for item in self.Size):
            self._size = size
        else:
            raise ValueError("size value not valid")