On 20 December 2011 10:55, Robert Kern <robert.k...@gmail.com> wrote:
> On 12/20/11 1:34 AM, Joshua Landau wrote: > >> In reading thorough the syntax defined in the reference >> <http://docs.python.org/py3k/**reference/compound_stmts.html#** >> class-definitions<http://docs.python.org/py3k/reference/compound_stmts.html#class-definitions> >> >, >> >> the class statement has surprised me. >> >> It says that the inheritance part of the class can accept comprehensions. >> What >> does this mean? >> I've tried: >> "class A(x for x in ()): pass" >> but this doesn't need the extra clause as "x for x in ()" is an >> expression, and >> thus this evaluates: >> "class A(x for x in (),): pass" >> although again it won't be a valid class anytime soon. >> >> So what is this clause for? >> > > I suspect that it's harder to make a grammar rule that allows every kind > of expression except for generator expressions than it is just to reuse the > "testlist" rule and let the runtime reject the generator object when it > goes to construct the class. > The thing is, as far as I can tell, the grammar would be the same without the added clause. That is because it's a valid grammar anyway. The only exception I can think of is if generators were treated exceptionally. Thus, while I agree it makes complete sense to make it a runtime error, the clause in the specification seems to be fluff. Also - what is this "testlist" rule thee speaks of? I think I'm just going to ignore it for now, as long as it doesn't mean I ignore valid code. Thanks Ian and Robert for the input. Should I file a documentation bug report? > -- > Robert Kern > > "I have come to believe that the whole world is an enigma, a harmless > enigma > that is made terrible by our own mad attempt to interpret it as though it > had > an underlying truth." > -- Umberto Eco > > -- > http://mail.python.org/**mailman/listinfo/python-list<http://mail.python.org/mailman/listinfo/python-list> >
-- http://mail.python.org/mailman/listinfo/python-list