Josh Rosenberg <shadowranger+pyt...@gmail.com> added the comment:

To be clear, this is a problem with old-style (printf-style) formatting, and 
applies to both bytes formatting and str formatting. So a class like:

    class Foo:
        def __index__(self):
            return 1

will fail with a TypeError should you do any of:

    '%o' % Foo()
    '%x' % Foo()
    '%X' % Foo()
    b'%o' % Foo()
    b'%x' % Foo()
    b'%X' % Foo()

even though hex(Foo()) and oct(Foo()) work without issue.

----------
title: Making a class formattable as hex/oct integer requires both __int__ and 
__index__ for no good reason -> Making a class formattable as hex/oct integer 
with printf-style formatting requires both __int__ and __index__ for no good 
reason

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

Reply via email to