On Jun 5, 2012 7:52 AM, "PJ Eby" <pje@telecommunity.com> wrote: On Sun, May 20, 2012 at 4:38 AM, Nick Coghlan <ncoghlan@gmail.com> wrote:
">

(original) (raw)

It's actually the pre-decoration class, since the cell is initialised before the class is passed to the first decorator. I agree it's a little weird, but I did try to describe it accurately in the new docs.

--
Sent from my phone, thus the relative brevity :)

On Jun 5, 2012 7:52 AM, "PJ Eby" <pje@telecommunity.com> wrote:
On Sun, May 20, 2012 at 4:38 AM, Nick Coghlan <ncoghlan@gmail.com> wrote:

When writing the docs for types.new_class(), I discovered that the

description of the class creation process in the language reference

was not only hard to follow, it was actually *incorrect* when it came

to describing the algorithm for determining the correct metaclass.



I rewrote the offending section of the language reference to both

describe the correct algorithm, and hopefully also to be easier to

read. Once people have had a chance to review the changes in the 3.3

docs, I'll backport the update to 3.2.



Previous docs: http://docs.python.org/py3k/reference/datamodel.html#customizing-class-creation

Updated docs: http://docs.python.org/dev/reference/datamodel.html#customizing-class-creation


This is only sort-of-related, but while reviewing the above, the bit about __class__ caught my eye and brought this question to mind: how do class decorators interact with __class__?� Specifically, what happens (or more to the point, is *supposed* to happen and documented as such) if a class decorator returns a different class object?


PEP 3135 doesn't address this, AFAICT.� It refers only to "the class", but doesn't say whether this is the class-as-returned-by-decorator or original defined class.� (ISTM that it should be the decorated class, since otherwise this would be different behavior compared to code that explicitly named the class.)


(Oh, and the rewrite looked good!)