如何表达一个变量只能取有限数量的值?

Bar*_*abe 2 python

我试图找到一种方法来约束python中的变量值。例如,假设我有一个可变门,它只能采用两个值:打开或关闭。就像是

door = 'open' || 'closed'
Run Code Online (Sandbox Code Playgroud)

然后,当我在某处使用门时,我确信不需要检查这些值,因为断言门就是打开或关闭。

也许上课?

class Door(object):
   open = 'open'
   closed = 'closed'

   def value(v=True, self):
      if v return open else return closed 
Run Code Online (Sandbox Code Playgroud)

但是,如果变量可以接受两个以上的值,该怎么办(我在这里被布尔值的本质所保存)?你会怎么做?

san*_*ash 7

考虑使用enum

import enum

class Door(enum.Enum):
    open = 'open'
    closed = 'closed'

d = Door('open')
print(d.value)
d = Door('closed')
print(d.value)
d = Door('is not a valid Door')
print(d.value)
Run Code Online (Sandbox Code Playgroud)

输出:

open
closed
ValueError: 'is not a valid Door' is not a valid Door
Run Code Online (Sandbox Code Playgroud)

  • 您的打字速度比我快。我要添加的唯一内容是[指向文档的链接](https://docs.python.org/3/library/enum.html#module-enum),并提到没有任何方法可以真正限制该值一个变量可以。例如,没有什么可以阻止`d ='foo'`。这就是动态类型语言的本质。 (3认同)