At 09:32 PM 3/12/2007 -0600, Steven Bethard wrote:
>On 3/12/07, Steven Bethard <[EMAIL PROTECTED]> wrote:
> > the signature of the method called will be::
> >     __prepare__(name, args, kwargs)
> > not
> >     __prepare__(name, *args, **kwargs)
> > right?
>
>On 3/12/07, Guido van Rossum <[EMAIL PROTECTED]> wrote:
> > I'm not sure anyone has thought much about it yet. I wonder
> > if the call shouldn't be made like this:
> >
> > __prepare__(name, bases, **kwargs)
> >
> > so that if you only expect certain specific keyword args you can
> > define it like this:
> >
> > def __prepare__(name, base, metaclass=X): ...
>
>Yeah, seems like **kwargs would be more useful in practice.

Really?  Why?  I can more easily see circumstances where you'd want to 
restrict the arguments. In the cases I have where I'd switch from a class 
decorator to a class keyword, I have a small set of decorators and would 
have an equally small set of keywords.


>I think there might be a parallel argument for passing in the bases as
>*args instead of as a tuple.  If you want to write a metaclass that
>expects exactly zero or one base classes, you could then write::
>
>     def __prepare__(name, **kwargs):
>     def __prepare__(name, base, **kwargs):

Ugh.  In principle, this isn't an issue if you can have keyword-only 
arguments, but I just don't like it.  Maybe that's because in my mind, this 
*is* a parallel with the type() signature, and I don't see a reason for it 
to be different.

_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to