簡體   English   中英

布爾變量的 Python 枚舉

[英]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.TRUEboolean_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM