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

Terry Reedy tjreedy at udel.edu
Thu Jun 5 02:59:47 CEST 2008


"Raymond Hettinger" <python at rcn.com> wrote in message 
news:2745D7EB7C064B16A88E433588021756 at RaymondLaptop1...
| 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".

On reading PEP3141 some months ago and again today, I thought and still do 
that all the methods that depend on a 2s-complement representation and 
implementation really belong to an implentation-defined subclass of 
Integral.  But I am not sure of the purpose of the class and of including 
such concrete methods in an ABC, and so said nothing ;-).

I notice that the similarly implementation-based frexp and ldexp math 
methods are *not* in the Real class.

| Requiring all those methods to be defined makes it harder to write
| a compliant class.  Other than int/long, no currently existing type
| matches-up with Integral.  Does anyone care about this?

I might some day, for didactic purposes, write integer classes based on 
prime-factorization or fibonacci representations.  I certainly would skip 
all the 2s-complement methods.  But I do not know that I would care much 
about being 'non-compliant'.

| If something like numpy's int8 eventually grows the required methods,
| it is worriesome 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.

In my view, the members of residue/remainder classes are not really 
integers unless their usage is carefully restricted to avoid invocation of 
the mod operation.

Terry Jan Reedy





More information about the Python-Dev mailing list