James Stroud wrote: > However, I think that what you are saying about metaclasses being > brittle relates more to implementation than language. In theory, these > should be equivalent: > > (1) class Bob(object): pass > (2) Bob = type('Bob', (), {}) > > And indeed a cursory inspection of the resulting classes show that they > are indistinguishable. > > That they wouldn't be seems an implementation bug and perhaps that bug > should be fixed rather than promoting the avoidance of (2) because it > does not create classes that behave as number (1).
You got something wrong ;) 'type' is the builtin metaclass, it works, I have nothing against it, and (1) and (2) are *exactly* equivalent. My gripe is against *custom* metaclasses, i.e. subclasses of 'type'. The paper is all about avoiding custom metaclasses and using 'type' instead (i.e. use the __metaclass__ hook, but not custom metaclasses). It is the same trick used by George Sakkis in this same thread. Michele Simionato -- http://mail.python.org/mailman/listinfo/python-list