-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Labels
type-featureA feature request or enhancementA feature request or enhancement
Description
Feature or enhancement
Proposal:
Enum gained an __init__
method in 3.11 which just passes:
def __init__(self, *args, **kwds):
pass
That was added in #30582. One person questioned it at the time, but there was no response. The best I can figure is that it was related to special handling of __init__
in EnumType.__dir__
, which you can see here:
Lines 768 to 779 in 3852269
def __dir__(cls): | |
# TODO: check for custom __init__, __new__, __format__, __repr__, __str__, __init_subclass__ | |
# on object-based enums | |
if cls._member_type_ is object: | |
interesting = set(cls._member_names_) | |
if cls._new_member_ is not object.__new__: | |
interesting.add('__new__') | |
if cls.__init_subclass__ is not object.__init_subclass__: | |
interesting.add('__init_subclass__') | |
for method in ('__init__', '__format__', '__repr__', '__str__'): | |
if getattr(cls, method) not in (getattr(Enum, method), getattr(Flag, method)): | |
interesting.add(method) |
That special handling of __init__
was removed by #30677 prior to 3.11 being released, which leaves no plausible function to Enum.__init__
that I can see. It muddies introspection of the type, so I think we should remove it if that's really the case.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs
Metadata
Metadata
Assignees
Labels
type-featureA feature request or enhancementA feature request or enhancement