K
Kenji Noguchi
Hi
I'm using Python 2.4.4 on 32bit x86 Linux. I have a problem with printing
hex string for a value larger than 0x800000000 when the value is given to
% operator via an instance of a class with __int__(). If I pass a long value
to % operator it works just fine.
Example1 -- pass a long value directly. this works.'80000000'
Example2 -- pass an instance of a class with __int__().... def __init__(self, v):
.... self.v = v
.... def __int__(self):
.... return self.v
....Traceback (most recent call last):
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?
by the way same thing happends on a 64bit system with a
value of 0x8000000000000000.
Regards,
Kenji Noguchi
I'm using Python 2.4.4 on 32bit x86 Linux. I have a problem with printing
hex string for a value larger than 0x800000000 when the value is given to
% operator via an instance of a class with __int__(). If I pass a long value
to % operator it works just fine.
Example1 -- pass a long value directly. this works.'80000000'
Example2 -- pass an instance of a class with __int__().... def __init__(self, v):
.... self.v = v
.... def __int__(self):
.... return self.v
....Traceback (most recent call last):
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?
by the way same thing happends on a 64bit system with a
value of 0x8000000000000000.
Regards,
Kenji Noguchi