Hello Spir! On Friday 30 January 2009, spir wrote: > In a rather consistent approach, Python does not provide any > standard way to simply define/describe/structure an object -- or a > class. The added flexibility of Python gives great powers to the programmers of libraries.
There is for example a library for Java/C++ style data attributes in Python; Traits: http://code.enthought.com/projects/traits/docs/html/traits_user_manual/intro.html Also pretty cool is the possibility to change what happens when you type the 'class' statement. You only have to define the global variable '__metaclass__', which must point to an alternative implementation of the class definition algorithm. It seems to be possible to write this algorithm in pure Python. Some documentation is here: http://www.python.org/download/releases/2.2/descrintro/#metaclasses http://www.python.org/doc/essays/metaclasses/ This is a class definition algorithm (a metaclass) written in Python: http://www.python.org/doc/essays/metaclasses/Meta.py You can even change the type of an object at runtime: ---- In [1]:class A(object): .1.: def f(self): .1.: print 'A.f; self:', id(self) .1.: In [2]:class B(object): .2.: def f(self): .2.: print 'B.f; self:', id(self) .2.: In [3]:a = A() In [4]:a.f() A.f; self: 26272592 In [7]:a.__class__ = B In [8]:a.f() B.f; self: 26272592 ----- Kind regards, Eike. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor