New submission from Jason Curtis <thatn...@gmail.com>:

Combining int and Enum, as with enum.IntEnum results in a class where __str__ 
cannot be effectively overridden. For example:


from enum import IntEnum

class myIntEnum(IntEnum):
    x = 1
    
    def __str__(self):
        return 'aaaaAAAa'
    
f'{myIntEnum.x}, {str(myIntEnum.x)}'


Expected output:
'aaaaAAAa, aaaaAAAa'

Actual output:
'1, aaaaAAAa'

Overriding __str__ in this way works as expected if the inherited classes are 
int or Enum individually. However, it does not work when inheriting (int, Enum) 
or when inheriting (intEnum).

Presumably this is a side effect of Enum's mixin behavior documented at 
https://docs.python.org/3/library/enum.html#others and it is possibly related 
to https://bugs.python.org/issue18264 .

----------
components: Library (Lib)
messages: 347089
nosy: Jason Curtis
priority: normal
severity: normal
status: open
title: IntEnum f-string behavior can't be overridden
type: behavior
versions: Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue37479>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to