I need to reassign the attribute value in Enum.
JavaScript
x
7
1
from enum import Enum
2
3
class Number(Enum):
4
number = "1"
5
6
Number.number = "2" # AttributeError: cannot reassign member 'number'
7
I tried to reassign the attribute, but I got:
AttributeError: cannot reassign member ‘number’
Advertisement
Answer
Author’s note: This is a horrible idea.
Let’s just delete the string "1"
from Python and replace it with "2"
JavaScript
1
34
34
1
from ctypes import c_byte
2
from enum import Enum
3
from sys import getsizeof
4
5
6
def change_enum_value(old: object, new: object) -> None:
7
"""
8
Assigns contents of new object to old object.
9
The size of new and old objection should be identical.
10
11
Args:
12
old (Any): Any object
13
new (Any): Any object
14
Raises:
15
ValueError: Size of objects don't match
16
Faults:
17
Segfault: OOB write on destination
18
"""
19
src_s, des_s = getsizeof(new), getsizeof(old)
20
if src_s != des_s:
21
raise ValueError("Size of new and old objects don't match")
22
src_arr = (c_byte * src_s).from_address(id(new))
23
des_arr = (c_byte * des_s).from_address(id(old))
24
for index in range(len(des_arr)):
25
des_arr[index] = src_arr[index]
26
27
28
class Number(Enum):
29
number = "1"
30
31
32
change_enum_value(Number.number.value, "2")
33
print(Number.number.value) # 2
34
You don’t have the "1"
anymore, quite literally.
JavaScript
1
4
1
>>> "1"
2
'2'
3
>>>
4
which sure is a tad concerning…