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
