Python 枚举如何强制只读访问?

问题描述 投票:0回答:1

我知道在Python中常量是通过大写变量名隐含的,但不是强制的。我还了解到,通过从 Enum 子类化,类可以实现枚举类型,从而防止单个枚举值被覆盖。

在我看来,这两个习惯用法似乎有些矛盾,我想知道 Enum 解决方案如何强制对变量值进行只读访问。

python enums
1个回答
0
投票

Python 的 Enum 类创建不可变的枚举成员,一旦定义就无法更改。这是通过覆盖 Enum 类中的

__setattr__
方法来强制执行的,如果您尝试重新分配成员的值,则会引发 AttributeError。

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

# Accessing a member
print(Color.RED)  # Outputs: Color.RED

# Attempting to change a member's value raises an error
try:
    Color.RED = 10
except AttributeError as e:
    print(f"Cannot modify Enum member: {e}")
© www.soinside.com 2019 - 2024. All rights reserved.