[Python-3000] PEP for Metaclasses in Python 3000

Greg Ewing greg.ewing at canterbury.ac.nz
Tue Mar 13 11:04:07 CET 2007


Nick Coghlan wrote:

>   - is it intended to typically be a static method or a class method of 
> the metaclass? (as it will be called before __new__, an instance method 
> of the metaclass wouldn't make sense)

Looks like it will have to be either a staticmethod or
classmethod, or else you'll have to give your metaclass
a metametaclass and make it an instance method of that.

Maybe this is another case for an implicitly-static
method, a la __new__?

>   - is the metaclass passed in to the namespace creation function as a 
> normal keyword argument, or is it automatically removed by the 
> interpreter?

I would hope it's removed.

> If the 
> meta keyword is stripped (or only provided when passed in explicitly), 
> then a class method is needed in order to reliably get at the metaclass 
> itself.

Or the keyword is stripped and the metaclass is passed
as the first argument, i.e.

   __prepare__(metaclass, name, bases, **kwargs_without_metaclass)

I don't like the idea of requiring the use of classmethod(),
since as far as I can tell it's badly broken when it comes
to making inherited method calls -- unless there's some
technique I don't know about it?

--
Greg


More information about the Python-3000 mailing list