Dev Shed has an excellent introduction to Python's metaclasses (via DPU). I get it now:
- Python's metaclasses are just normal classes that inherit from type
- When you instantiate a metaclass the object returned is itself a class
- To declare that a class has a given metaclass, set the __metaclass__ data member to the metaclass when declaring the class.
- The metaclass' __init__ method is called when a class that has it as its metaclass is declared (__init__ for metaclasses takes (klass, klass_name, base_classes, dict_of_attributes) as its parameters).
And that's it (according to the article). So, it seems that Python very nearly has a prototype-based object system, but not quite. (And I ❤ prototype-based object systems.) With a prototype-based object system the distinction between metaclasses and classes (heck, and objects) goes away, so it seems to me that you could do the same thing as what Python calls metaclasses simply by overriding a particular object's clone method. Am I wrong?
new⇒Court rejects death penalty for raping children - Yahoo! News
:)...
Keith: Jul 4, 11:32am