Skip to content

It seems that enum.Enum.__init__ serves no purpose #128080

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
tungol opened this issue Dec 18, 2024 · 0 comments
Closed

It seems that enum.Enum.__init__ serves no purpose #128080

tungol opened this issue Dec 18, 2024 · 0 comments
Labels
type-feature A feature request or enhancement

Comments

@tungol
Copy link
Contributor

tungol commented Dec 18, 2024

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:

cpython/Lib/enum.py

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

@tungol tungol added the type-feature A feature request or enhancement label Dec 18, 2024
ethanfurman pushed a commit that referenced this issue Dec 19, 2024
remove unnecessary __init__ method from Enum

Co-authored-by: Peter Bierma <[email protected]>
srinivasreddy pushed a commit to srinivasreddy/cpython that referenced this issue Dec 23, 2024
…onGH-128081)

remove unnecessary __init__ method from Enum

Co-authored-by: Peter Bierma <[email protected]>
srinivasreddy pushed a commit to srinivasreddy/cpython that referenced this issue Jan 8, 2025
…onGH-128081)

remove unnecessary __init__ method from Enum

Co-authored-by: Peter Bierma <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type-feature A feature request or enhancement
Projects
None yet
Development

No branches or pull requests

2 participants