diff --git a/Lib/enum.py b/Lib/enum.py index 80945c116bfe58..935e2bd15d0afa 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -1112,14 +1112,6 @@ def __new__(cls, value): 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(" 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. diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 69fba9a13c89a4..bfab0bd4b07f52 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2646,6 +2646,7 @@ class Private(Enum): self.assertEqual(Private._Private__corporal, 'Radar') self.assertEqual(Private._Private__major_, 'Hoolihan') + @unittest.skip("Accessing all values retained for performance reasons, see GH-93910") def test_exception_for_member_from_member_access(self): with self.assertRaisesRegex(AttributeError, " member has no attribute .NO."): class Di(Enum): @@ -2653,12 +2654,6 @@ class Di(Enum): NO = 0 nope = Di.YES.NO - def test_no_exception_for_overridden_member_from_member_access(self): - class Di(Enum): - YES = 1 - NO = 0 - Di.YES.NO = Di.NO - nope = Di.YES.NO def test_dynamic_members_with_static_methods(self): #