[英]Python Enum for Boolean variable
我正在使用類 enum.Enum 來創建具有選定成員的變量。
主要原因是通過為變量選擇幾個允許的成員之一,使我團隊中的其他開發人員能夠使用相同的約定。
我想以同樣的方式創建一個布爾變量,讓其他開發人員可以選擇 True 或 False。
是否可以定義一個將接收 True False 選項的枚舉? 有沒有更好的選擇?
以下選項不起作用:
boolean_enum = Enum('boolean_enum', '真假')
boolean_enum = Enum('boolean_enum', True False)
boolean_enum = Enum('boolean_enum', [('True', True), ('False', False)])
查看此 API 的文檔: https : //docs.python.org/3/library/enum.html#functional-api
如果您只是為名稱參數指定 'True False',它們將被分配自動枚舉值 (1,2),這不是您想要的。 當然,你不能只發送 True False 而不是 names 參數的字符串參數。
所以你想要的是允許你指定名稱和值的選項之一,例如上面的。
編輯:
當如上定義時,枚舉元素不能被boolean_enum.True
訪問(但它們可以被boolean_enum['True']
或boolean_enum(True)
)。
為避免此問題,可以更改字段名稱並將其定義為
Enum('boolean_enum', [('TRUE', True), ('FALSE', False)])
然后作為boolean_enum.TRUE
或boolean_enum['TRUE']
或boolean_enum(True)
如今(python 3.6+)這可以通過使用enum.Flag
更方便地實現:
from enum import Flag
class Boolean(Flag):
TRUE = True
FALSE = False
enum.Flag
對於enum.Enum
一個額外好處是它從一開始就支持(並在其下關閉)按位運算符( &,|,~
):
>>> Boolean.TRUE & Boolean.FALSE
Boolean.FALSE
>>> Boolean.TRUE | Boolean.FALSE
Boolean.TRUE
>>> ~Boolean.FALSE
Boolean.TRUE
有關更多信息,請參閱https://docs.python.org/3/library/enum.html#enum.Flag
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.