On Nov 18, 5:59 pm, Kay Schluehr <[EMAIL PROTECTED]> wrote: > No need to excuse. I think Ruby provides a nice context for discussing > the semantics of top level "open classes". But I think those are > entirely different than your contextual bindings. Note I find your > proposal somewhat confusing since I expect that an attribute is > "owned" by an object and is not an arbitrary contextual property.
I obviously like ruby as well as python, I just didn't want to turn the discussion into a "I can do this in ruby, can you do that in python" thread, so my apology was more along those lines that an apology for using ruby at all. :) As far as "ownership" of an object, that's what object abstraction is all about is it not? Multiple instances can "own" a method via polymorphic substitution, without a strict interface definition. My proposal simply adds a new scope within which to look for "ownership". Of course, there are problems with that, as noted above. > Regarding open classes in Python, what about "extension classes"? > > class +object: > def len(self): > return self.__len__() > > This either adds the len method to the namespace of object or it > creates a new namespace which is associated with the namespace of > object s.t. each object can lookup attributes in this namespace when > default lookup fails. I'm not entirely sure about scope. I think the > lifetime of an extension class shall be determined by the lifetime of > the extended class and not by the scope in which the extension class > is defined. What do you think? Sounds like a interesting approach! Worth looking into, imo. > PS. you can use EasyExtend when you want to provide a language > extension without hacking the CPython runtime. EE was made for such > kinds of experiments. Hadn't seen that before, thanks for the reference. :) Regards, Jordan -- http://mail.python.org/mailman/listinfo/python-list