Skip to content

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

@tungol

Description

@tungol

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
ifcls._member_type_isobject:
interesting=set(cls._member_names_)
ifcls._new_member_isnotobject.__new__:
interesting.add('__new__')
ifcls.__init_subclass__isnotobject.__init_subclass__:
interesting.add('__init_subclass__')
formethodin ('__init__', '__format__', '__repr__', '__str__'):
ifgetattr(cls, method) notin (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

No one assigned

    Labels

    type-featureA feature request or enhancement

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions