Damjan wrote: >>> I understand that I can use __metaclass__ to create a class which >>> modifies the behaviour of another class. >>> >>> How can I add this metaclass to *all* classes in the system? >>> >>> (In ruby I would alter the "Class" class) >> >> You'd have to set >> >> __metaclass__ = whatever >> >> at the top of each module whose classes are to get the new behavior. > > I think '__metaclass__ = whatever' affects only the creation of classes that > would otherwise be old-style classes?
Wrong. If you set __metaclass__ = type, every class in that module will be new-style. If you set __metaclass__ = MyClass, and MyClass inherits from <type>, every class in that module will be new-style and have MyClass as a metaclass. The usual way to create new-style classes, inheriting from object or another new-style class, works because if no __metaclass__ is defined, the first base class's class is taken as the metaclass. Georg -- http://mail.python.org/mailman/listinfo/python-list