[Python-Dev] quick poll: could int, str, tuple etc. become type objects?

Barry A. Warsaw barry@digicool.com
Tue, 5 Jun 2001 14:31:12 -0400


>>>>> "GvR" == Guido van Rossum <guido@digicool.com> writes:

    GvR> Now invoke the Zen of Python: "There should be one-- and
    GvR> preferably only one --obvious way to do it."  So why not make
    GvR> these built-in functions *be* the corresponding types?  Then
    GvR> instead of

    >> int
    GvR>   <built-in function int>

    GvR> you would see

    >> int
    GvR>   <type 'int'>

+1

    GvR> but otherwise the behavior would be identical.  (Note that I
    GvR> don't require that a factory function returns a *new* object
    GvR> each time.)

    GvR> If we did this for all built-in types, we'd have to add maybe
    GvR> a dozen new built-in names -- I think that's no big deal and
    GvR> actually helps naming types.  The types module, with its
    GvR> awkward names and usage, can be deprecated.

I'm a little concerned about this, since the names that would be added
are probably in common use as variable and/or argument names.  I.e. At
one point `list' was a very common identifier in Mailman, and I'm sure
`dict' is used quite often still.  I guess this would be okay as long
as working code doesn't break because of it.

OTOH, I've had fewer needs for a dict builtin (though not non-zero),
and easily zero needs for traceback objects, code objects, etc.

    GvR> There are details to be worked out, e.g.

    GvR> - Do we really want to have built-in names for code objects,
    GvR> traceback objects, and other figments of Python's internal
    GvR> workings?

I'd say no.  However, we could probably C-ify the types module, a la,
the exceptions module, and that would be the logical place to put the
type factories.

    GvR> - What should the argument to dict() be?  A list of (key,
    GvR> value) pairs, a list of alternating keys and values, or
    GvR> something else?

You definitely want to at least accept a sequence of key/value
2-tuples, so that d.items() can be retransformed into a dictionary
object.

-Barry