Fla*_*rav 8 python enums tuples
所以我试图在 python 中使用枚举并遇到以下错误:当我使用枚举作为元组并给它两个值时,我不能只访问一个值,例如 tuple[0]
class Rank(Enum):
ACE = 1
TWO = 2
THREE = 3
FOUR = 4
FIVE = 5
SIX = 6
SEVEN = 7
EIGHT = 8
NINE = 9
TEN = 10
JACK = 11
QUEEN = 12
KING = 13, "King"
print (Rank.KING.value)
Run Code Online (Sandbox Code Playgroud)
印刷品是
(13, '国王')
如何仅访问一个值以便打印 13 或“King”?
blh*_*ing 10
使用enum.Enum,类变量名称本身成为实例name的枚举属性的属性Enum,因此您不必创建KING值和名称的元组:
class Rank(Enum):
King = 13
print(Rank.King.name) # outputs 'King'
print(Rank.King.value) # outputs 13
Run Code Online (Sandbox Code Playgroud)
如果你想用大写字母命名类变量,但它们的name值是混合大小写的,这不是Enum设计的目的,你必须自己子类化Enum并覆盖该name方法以自定义行为:
from enum import Enum, DynamicClassAttribute
class MixedCaseEnum(Enum):
@DynamicClassAttribute
def name(self):
return self._name_.title()
class Rank(MixedCaseEnum):
KING = 13
print(Rank.KING.name) # outputs 'King'
print(Rank.KING.value) # outputs 13
Run Code Online (Sandbox Code Playgroud)
小智 9
如果您愿意,现有的答案都没有解释如何在枚举中拥有三个(或更多)值。
例如,假设最初的提问者想要(13, "K", "king")枚举,他们会这样做:
class Rank(Enum):
K = 13, "King"
def __init__(self, rank, label):
self.rank = rank
self.label = label
Run Code Online (Sandbox Code Playgroud)
获取__init__值并将它们分配给枚举成员。这意味着Rank.K.rank返回13和Rank.K.label返回"King"。
尽管在此示例中并非严格需要,但在 Enum 上存储多个键/值对可能会很有用。
注意Rank.K.value仍然存在,并返回元组(13, "King")
您可以通过以下方式访问 13 或“国王”:
Rank.KING.value[0]
Rank.KING.value[1]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6553 次 |
| 最近记录: |