int literals and __class__

Alex Martelli aleaxit at yahoo.com
Tue Nov 16 08:14:16 CET 2004


Steven Bethard <steven.bethard at gmail.com> wrote:

> Dan Bishop <danb_83 <at> yahoo.com> writes:
> > You don't have to ask *that* nicely.
> > 
> > >>> 1 .__class__  # notice the space
> > <type 'int'>
> 
> Why does this work?  Or, perhaps my real question is why *doesn't* it work
> without the space?  Pointers to the appropriate point in the docs would be
> fine...  I assume it's something about making parsing easier...?

It's to make lexing more predictable: it's known as maximal-much lexing
(without backtracking: backtracking in lexical analysis would really but
really be bad).  '1.' (no space) is a token (stands for a float
literal).  So, '1.__class__' is two tokens: float '1.' followed by
identified '__class__'.


Alex



More information about the Python-list mailing list