Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—允许的变量值_Python_Enums - Fatal编程技术网

Python—允许的变量值

Python—允许的变量值,python,enums,Python,Enums,如何明确定义给定变量的值?假设我希望变量size的值为'small','medium',或'big'而不是其他值 编辑: 我希望避免变量设置为列表之外的某个值(例如,在本例中设置为“微小”)的情况。就像Java中的枚举一样。此变量将是一个类字段。最简单的方法是始终使用专用方法,该方法将首先验证输入,如果输入正确,则设置变量。下面是一些示例: 类测试: 定义初始化(自): self.\uuu变量=无 def set_变量(自身,值): 如果值不在('small'、'medium'、'big'):

如何明确定义给定变量的值?假设我希望变量size的值为'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'
和shed
size的
枚举性
难道您不能设置
size='tiny'
?是的,但这将是一个