Python—允许的变量值
如何明确定义给定变量的值?假设我希望变量size的值为'small','medium',或'big'而不是其他值 编辑:Python—允许的变量值,python,enums,Python,Enums,如何明确定义给定变量的值?假设我希望变量size的值为'small','medium',或'big'而不是其他值 编辑: 我希望避免变量设置为列表之外的某个值(例如,在本例中设置为“微小”)的情况。就像Java中的枚举一样。此变量将是一个类字段。最简单的方法是始终使用专用方法,该方法将首先验证输入,如果输入正确,则设置变量。下面是一些示例: 类测试: 定义初始化(自): self.\uuu变量=无 def set_变量(自身,值): 如果值不在('small'、'medium'、'big'):
我希望避免变量设置为列表之外的某个值(例如,在本例中设置为“微小”)的情况。就像Java中的枚举一样。此变量将是一个类字段。最简单的方法是始终使用专用方法,该方法将首先验证输入,如果输入正确,则设置变量。下面是一些示例:
类测试:
定义初始化(自):
self.\uuu变量=无
def set_变量(自身,值):
如果值不在('small'、'medium'、'big'):
提升值错误()
self.\uuu变量=值
最简单的方法是始终使用专用方法,该方法首先验证输入,如果输入正确,然后设置变量。下面是一些示例:
类测试:
定义初始化(自):
self.\uuu变量=无
def set_变量(自身,值):
如果值不在('small'、'medium'、'big'):
提升值错误()
self.\uuu变量=值
您正在描述一个枚举
,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'
您正在描述一个
枚举
,它在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'
您可以在类中定义一个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")
您可以在类中定义一个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")
定义什么,或者定义谁?文档字符串、枚举数、常量、断言、验证或任何组合都可能有用。你现在得到了什么,它到底有什么问题?每个变量都有一个特定的类型。除非
small
、medium
和large
是分配给整数的变量,否则size
变量将是字符串类型。但是,请澄清你的问题,因为到目前为止,它是非常模糊的。您的要求不明确我希望避免变量设置为列表之外的某个值(例如,在本例中设置为“微小”)的情况。就像Java中的枚举一样。此变量将是一个类字段。您可以尝试在可能的情况下查找一种编程语言。为什么或谁定义?文档字符串、枚举数、常量、断言、验证或任何组合都可能有用。你现在得到了什么,它到底有什么问题?每个变量都有一个特定的类型。除非small
、medium
和large
是分配给整数的变量,否则size
变量将是字符串类型。但是,请澄清你的问题,因为到目前为止,它是非常模糊的。您的要求不明确我希望避免变量设置为列表之外的某个值(例如,在本例中设置为“微小”)的情况。就像Java中的枚举一样。这个变量将是一个类字段。你可以在可能的情况下尝试找到一种编程语言。他从来没有说过他想用字符串来表示小、中、大。你应该避免回答像这样的问题,因为这些问题非常广泛和含糊不清。@MoinuddinQuadri你怎么知道的?他已经告诉你了吗?@goosberry先生我不知道,所以我什么都没回答。这是基于我对变量名的假设,即size
@MoinuddinQuadri好吧,听起来好像你在试图纠正某人,并将其陈述为事实。如果你不知道,那你为什么要纠正别人?他们可能是对的,在这种情况下,他们可能是对的。@Yakuza嗯,看来你猜对了。但我只喜欢回答我知道可以具体回答的问题,我不必猜测OP的意思。他从来没有说过他想用字符串来表示小、中、大。你应该避免回答像这样的问题,因为这些问题非常广泛和含糊不清。@MoinuddinQuadri你怎么知道的?他已经告诉你了吗?@goosberry先生我不知道,所以我什么都没回答。这是基于我对变量名的假设,即size
@MoinuddinQuadri好吧,听起来好像你在试图纠正某人,并将其陈述为事实。如果你不知道,那你为什么要纠正别人?他们可能是对的,在这种情况下,他们可能是对的。@Yakuza嗯,看来你猜对了。但我只想回答我知道可以具体回答的问题,我不必猜测OP的意思。你能不能设置size='tiny'
?是的,但它将是一个str
。给定Python的duck类型,您可以将任何变量设置为任何值,因此没有任何公式可以阻止这种赋值。问题是如何明确定义给定变量可以具有哪些值?
。虽然枚举是相关的,但在Python中似乎无法限制通用变量具有有限的值集。类字段是另一回事。从严格意义上讲,您是正确的,但实际上,OP描述的用例最好由enum
库在Python中处理。即使您使size
成为限制实例变量值的类的实例(这实际上是您使用enum
所做的,只是以pythonical方式进行),您可以再次执行size='tiny'
和shedsize的
枚举性
难道您不能设置size='tiny'
?是的,但这将是一个