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.
Initially, I was concerned that this would break the symmetry with the
__metaclass__ signature::
def __metaclass__(name, bases, bodydict):
def __prepare__(name, bases, kwargs):
But then I realized that there's really no need for any symmetry here
-- they're getting passed two different things (kwargs != bodydict)
and they're serving two pretty different purposes.
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):
STeVe
--
I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a
tiny blip on the distant coast of sanity.
--- Bucky Katt, Get Fuzzy
_______________________________________________
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