[Python-Dev] Mini-Pep: Simplifying the Integral ABC
Guido van Rossum
guido at python.org
Wed Jun 4 22:50:37 CEST 2008
On Wed, Jun 4, 2008 at 12:57 PM, Raymond Hettinger <python at rcn.com> wrote:
> From: "Guido van Rossum" <guido at python.org>
>>
>> Unless more folks actually say they agree I don't want to go forward
>> with this. There was quite a bit of discussion about PEP 3141 and it
>> was accepted; striking this much from it with virtually no discussion
>> seems wrong to me.
>
> Not sure how to generate more discussion. It seems self-evident
> that an abc with lots of abstract methods is inherently less usable
> and that bitwise operations go beyond the basic notion of "integeriness".
> Requiring all those methods to be defined makes it harder to write
> a compliant class.
In general it is good to require that more thought goes into the
design and implementation of a class, so that less thought needs to go
into using it.
> Other than int/long, no currently existing type
> matches-up with Integral. Does anyone care about this?
Does "this" refer to "the Integral ABC" or "no type matches up with it" ?
> If something like numpy's int8 eventually grows the required methods,
> it is worrysome that the numerator/denominator properties will be
> automatically supplied for fractions.py to accept as inputs eventhough
> int8's wrap-around behavior makes them entirely unsuitable.
I'm not sure what you mean. This is probably just my lack of
imagination. Can you give a small code example where using an int8
with the fractions module would cause problems? The Fraction class
appears to be calling __index__ on its arguments, which would convert
the int8 to a proper int (or long, in Python 2.6).
> I don't
> know if this bothers anyone. It would seem that a consumer of an Integral
> can assume the existence of methods but nothing about whether the
> result is usable. That might not be a big deal except that numpy is t
> he only known use case.
Any integer type that performs arithmetic modulo some number is
problematic. Perhaps a totally separate ABC needs to be defined for
this purpose, one that doesn't inherit from Rational.
> Hopefully, some discussion gets generated. But if no one cares, I'll
> happily drop it.
Have you asked the numpy folks?
If enough people care, we could easily create a BinaryInteger ABC that
defines the bitwise operations.
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list