Steve Jorgensen wrote: > I brought this up before, but I had a kind of weak understanding of > enum.Enum at the time, so my expression of the issue and proposal for a > solution were pretty awkward. > Basically, with the current implementation of Enum and supporting classes, > the only way that a member can have access to its own name during or prior to > its > initialization is if/when its value is auto-generated, so if you want to > specify a value > rather than having it auto-generated (e.g. to generate a label attribute) > then there's no > convenient way to do it. > One can work around that by writing the code to make use of the name > property after installation, but why should we force the developer to write > code in an > awkward manner when we could simply make the name available to the `__new__ > method. It > might also be nice to supply the list of all names (in case the value is > assigned to > multiple names) as well as the primary name. > The idea that comes to mind is to pass a context object argument to > __new__ with name and names attributes. To preserve > backward compatibility, there could be have a class attribute named something > like > _use_context_ (False by default) to enable or disable passing > that parameter. Going forward, additional attributes could be added to the > context without > additional backward compatibility concerns. > Of course, the exact mechanism could be something completely different, but > I'd like to > see this or some other mechanism that addresses the concern.
I accidentally omitted some text, leaving that a little unclear. "…so if you want to specify a value rather than having it auto-generated (e.g. to generate a label attribute) then there's no convenient way to do it." should read "…so if you want to specify a value rather than having it auto-generated _and_ make use of the name (e.g. to generate a label attribute) then there's no convenient way to do it." _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/TQKXKKHN6ABHDLAXMGYF6V7MQVAONYKS/ Code of Conduct: http://python.org/psf/codeofconduct/