New submission from orlnub123 <orlnub...@gmail.com>:
If an enum has a member named _convert it gets shadowed by the _convert method as shown below. >>> import enum >>> >>> class Test(enum.Enum): ... _convert = enum.auto() ... >>> Test._convert <bound method Enum._convert of <enum 'Test'>> I've came up with a couple of solutions: 1. Add _convert to the invalid names list, next to mro 2. Rename _convert to _convert_ as sunder names are reserved 3. Move _convert to the metaclass I think the first solution would be the worst as it would break existing enums that have _convert as a member (although unusable). The problem with the second solution would be breaking external code that uses it although I think that's a moot point as it's meant for internal use. Another shortcoming would be having to update all the stdlib code that uses it. The third solution might be a bit confusing on its own if an existing enum with a _convert member suddenly removed it leaving you with a bound method instead of raising an AttributeError. ---------- components: Library (Lib) messages: 322681 nosy: ethan.furman, orlnub123 priority: normal severity: normal status: open title: Enum._convert shadows members named _convert type: behavior versions: Python 3.6, Python 3.7, Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue34282> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com