如何明确定义给定变量的值?假设我希望变量大小的值为&#39;小&#39; ,&#39; medium&#39; < / strong>,或&#39; big&#39; ,没有别的。
编辑: 我希望避免将变量设置为列表之外的某种情况(例如,在这种情况下为“微小的”)。就像Java中的枚举一样。这个变量是一个类字段。
答案 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)
您正在描述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='')
<强>输出:强>
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")