diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2022-07-17 01:13:57 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-17 01:13:57 (GMT) |
commit | c20186c3972ff38577c4c5e32ca86748210983d2 (patch) | |
tree | 75b3d7b4d3a5ff436d43c937bbd2bae96d5254e5 /Lib/enum.py | |
parent | 6da988a46c8955755624ad9878288d5214fceb4e (diff) | |
download | cpython-c20186c3972ff38577c4c5e32ca86748210983d2.zip cpython-c20186c3972ff38577c4c5e32ca86748210983d2.tar.gz cpython-c20186c3972ff38577c4c5e32ca86748210983d2.tar.bz2 |
gh-93910: [Enum] restore member.member restriction while keeping performance boost (GH-94913)
Diffstat (limited to 'Lib/enum.py')
-rw-r--r-- | Lib/enum.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Lib/enum.py b/Lib/enum.py index 652878c..a4f1f09 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -1101,6 +1101,14 @@ class Enum(metaclass=EnumType): def __init__(self, *args, **kwds): pass + def __getattribute__(self, name): + self_dict = super().__getattribute__('__dict__') + cls = super().__getattribute__('__class__') + value = super().__getattribute__(name) + if isinstance(value, cls) and name not in self_dict and name in self._member_names_: + raise AttributeError("<enum '%s'> member has no attribute %r" % (cls.__name__, name)) + return super().__getattribute__(name) + def _generate_next_value_(name, start, count, last_values): """ Generate the next value when not given. |