Python Oddity - print a reserved name

Michael Foord fuzzyman at
Wed Sep 15 21:57:35 CEST 2004

Duncan Booth <duncan.booth at invalid.invalid> wrote in message news:<Xns95658A6A9564Eduncanrcpcouk at>...
> Michael Foord wrote:
> > >>> something.__dict__['print'] = 3
> Or, slightly prettier, use:
>     setattr(something, 'print', 3)
> > See that I can't set the something.print attribute directly, but can
> > set it indirectly. Is this behaviour 'necessary' or just an anomaly of
> > the way IDLE detects Syntax Errors ?
> > 
> No, that is simply how Python works. You can only use the direct syntax to 
> set attributes whose names are valid Python identifiers, but indirectly you 
> can use any string at all as the attribute name. It doesn't do any harm and 
> sometimes it can be extremely useful.
> You can do this pretty much anywhere that Pythonn uses a dict internally. 
> For example you can call functions with arbitrary keyword arguments 
> provided you use the ** syntax.

Right - but although 'print' is a reserved word there is no *need* for
object.print to be reserved.. and as Alex has pointed out that could
actually be damned inconvenient..........

Oh well.....



More information about the Python-list mailing list