Python - 允许的变量值

Jak*_*but 1 python enums

如何明确定义给定变量可以具有哪些值?假设我希望可变大小的值是'small''medium''big'而不是别的。

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

Yak*_*uza 5

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

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
Run Code Online (Sandbox Code Playgroud)


Cra*_*ler 5

您正在描述一个enumeration,该enum库在 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='')
Run Code Online (Sandbox Code Playgroud)

输出:

Size.big
invalid Size ('tiny'). Size must be one of 'small', 'medium' or 'big'
Run Code Online (Sandbox Code Playgroud)