"James Mills" <prologic at shortcircuit.net.au> writes:
> Python is a dynamic object oriented language ... (almost verbatim
> from the website). It is compiled to bytecode and run on a virtual
> machine.
1. There is nothing inherent about dynamic languages that prevents
them from being compiled. There are compiled implementations of
Lisp and Scheme that beat the pants off of Python in performance.
2. There is also nothing inherent in a dynamic OO language that says
that class descriptors have to be mutable, any more than strings have
to be mutable (Python has immutable strings). I agree that being able
to modify class descriptors at runtime is sometimes very useful. The
feature shouldn't be eliminated from Python or else it wouldn't be
Python any more. But those occasions are rare enough that having to
enable the feature by saying (e.g.) "@dynamic" before the class
definition doesn't seem like a problem, both for encapsulation
and because it can also improve performance.