[Python-3000] PEP 31XX: A Type Hierarchy for Numbers (and other algebraic entities) (original) (raw)

Jim Jewett jimjjewett at gmail.com
Mon Apr 30 04:01:57 CEST 2007


On 4/29/07, Steven Bethard <steven.bethard at gmail.com> wrote:

On 4/29/07, Talin <talin at acm.org> wrote: > If it were technically possible, I would recommend that this PEP have to > run the same gauntlet that any other large library addition would, which > is to go through a long period of community feedback and criticism, > during which a large number of people actually attempt to use the > feature for real work.

This sounds like a pretty good reason to add isinstance() and issubclass(). Then the various ABCs can be distributed as third-party modules but can still make sure that things like isinstance(42, Real) and issubclass(int, Complex) are True (or whatever other assertions people want to make).

Or isexample, so that we aren't locked into implementing ABCs as base classes.

def isexample(val, ABC):
    return ABC.__example__(val)

class ABC(object):
    def __example__(cls, val):
        if val in cls.__instance:  return True
        if val in cls.__non_instance:  return False
        for instclass in type(val).__mro__:
            if instclass in __class:  return True
            if instclass in __non_class: return False
        return False

    ... methods to register classes, unregister subclasses, etc

-jJ



More information about the Python-3000 mailing list