string formatter %x and a class instance with __int__ or __long__ cannot handle long
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Thu Jun 21 02:46:28 EDT 2007
En Thu, 21 Jun 2007 00:24:28 -0300, Kenji Noguchi <tokyo246 at gmail.com>
escribió:
> Example2 -- pass an instance of a class with __int__()
>>>> class X:
> ... def __init__(self, v):
> ... self.v = v
> ... def __int__(self):
> ... return self.v
> ...
>>>> y = X(0x80000000)
>>>> "%08x" % y
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> TypeError: int argument required
>>>>
>
> The behavior looks inconsistent. By the way __int__ actually
> returned a long type value in the Example2. The "%08x" allows
> either int or long in the Example1, however it accepts int only
> in the Example2. Is this a bug or expected?
It is a bug, at least for me, and I have half of a patch addressing it. As
a workaround, convert explicitely to long before formatting.
--
Gabriel Genellina
More information about the Python-list
mailing list