[Python-Dev] Mini-Pep: Simplifying the Integral ABC

Guido van Rossum guido at python.org
Fri Jun 6 22:47:01 CEST 2008


Make that int() instead of long() and I'm okay with it.

On Fri, Jun 6, 2008 at 1:33 PM, Raymond Hettinger <python at rcn.com> wrote:
> New idea!  I missed an obvious solution. Let the binary methods in Integral
> be mixins instead of abstract methods.  That minimizes the burden on the
> class implementer while providing maximum support for clients.
>
> class Integral(Rational):
>   ...
>   def __lshift__(self, other):
>       """self << other"""
>       return long(self) << long(other)
>   def __xor__(self, other):
>       """self ^ other"""
>       return long(self) ^ long(other)
>
> I worried a bit about changing type, but this kind of thing is already baked
> into numbers.py:
>
>   @property
>   def imag(self):
>       """Real numbers have no imaginary component."""
>       return 0
>
>   @property
>   def denominator(self):
>       """Integers have a denominator of 1."""
>       return 1
>
> Raymond
>
>
> ----- Original Message ----- From: "Alex Martelli" <aleaxit at gmail.com>
> To: "Guido van Rossum" <guido at python.org>
> Cc: "Raymond Hettinger" <python at rcn.com>; <python-dev at python.org>
> Sent: Friday, June 06, 2008 11:40 AM
> Subject: Re: [Python-Dev] Mini-Pep: Simplifying the Integral ABC
>
>
>> On Fri, Jun 6, 2008 at 11:01 AM, Guido van Rossum <guido at python.org>
>> wrote:
>>>
>>> On Thu, Jun 5, 2008 at 8:45 PM, Raymond Hettinger <python at rcn.com> wrote:
>>>>
>>>> Does anyone actually need an int lookalike with binary methods but
>>>> cannot just inherit from int?
>>>
>>> Does anyone actually need an int lookalike with operations like +, -
>>> etc. but cannot just inherit from int? If the answer is yes, is there
>>> a compelling reason why they wouldn't want to support binary methods
>>> as well?
>>
>> Yes, there's a use case for implementing long integers as arrays of
>> decimal digits -- addition is roughly as efficient as for binary
>> integers (x86 chips still have instructions to help with that), and
>> emitting as decimal digits is MUCH more efficient of course -- so if
>> I/O in decimal form is the most common operation, with a little
>> arithmetic (particularly sums), you could gain performance; binary
>> operations, however, would be as inefficient as decimal form
>> conversion is for ordinary binary ints, and not needed for the typical
>> applications that would use these "decimal coded integers"
>> (accounting), so why not save the implementer of such an extension
>> from having to write that unneeded and slow extra code?
>>
>>
>> Alex
>
>



-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list