On 9/2/07, Guido van Rossum <[EMAIL PROTECTED]> wrote:
> On 9/2/07, Brett Cannon <[EMAIL PROTECTED]> wrote:
> > PEP 3115 says a metaclass' __prepare__ takes two positional arguments,
> > name and bases.  But the example has it actually accept an arbitrary
> > number of arguments: name and then everything else is bound to bases.
> >
> > Which happens to be true?  I'm too tired to even fully trust that I am
> > reading the PEP correctly, so I am not about to try to write an
> > example to see which is correct and come up with a coherent rewording
> > if I am right about what is wrong.  =)
>
> I think you're misreading what you think is an example. I'm assuming
> you're referring to this code:
>
>        def prepare_class(name, *bases, metaclass=None, **kwargs):
>           if metaclass is None:
>              metaclass = compute_default_metaclass(bases)
>           prepare = getattr(metaclass, '__prepare__', None)
>           if prepare is not None:
>              return prepare(name, bases, **kwargs)
>           else:
>              return dict()
>
> This indeed *defines* a function with a *bases argument, but it is not
> called __prepare__! It *calls* __prepare__ passing it name and bases,
> i.e. the 2nd argument to prepare is a tuple of bases.

Ah, OK, that is the issue (that and type.__prepare__ takes any
arguments and just always returns a new dictionary).  So it was the
lack of sleep.  =)

-Brett
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
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