[Python-Dev] Python keywords (was Lockstep iteration - eureka!)
Mark Hammond
MarkH@ActiveState.com
Thu, 10 Aug 2000 09:03:19 +1000
[Skip laments...]
> Could this be extended to many/most/all current instances of
> keywords in Python? As Tim pointed out, Fortran has no
> keywords. It annoys me that I (for example) can't define
> a method named "print".
Sometimes it is worse than annoying!
In the COM and CORBA worlds, it can be a showstopper - if an external
object happens to expose a method or property named after a Python keyword,
then you simply can not use it!
This has lead to COM support having to check _every_ attribute name it sees
externally, and mangle it if a keyword.
A bigger support exists for .NET. The .NET framework explicitly dictates
that a compliant language _must_ have a way of overriding its own keywords
when calling external methods (it was either that, or try and dictate a
union of reserved words they can ban)
Eg, C# allows you to surround a keyword with brackets. ie, I believe
something like:
object.[if]
Would work in C# to provide access to an attribute named "if"
Unfortunately, Python COM is a layer ontop of CPython, and Python .NET
still uses the CPython parser - so in neither of these cases is there a
simple hack I can use to work around it at the parser level.
Needless to say, as this affects the 2 major technologies I work with
currently, I would like an official way to work around Python keywords!
Mark.