Grammar for classes

Joshua Landau joshua.landau.ws at gmail.com
Tue Dec 20 12:05:05 EST 2011


On 20 December 2011 10:55, Robert Kern <robert.kern at 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>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20111220/7c75b0d6/attachment-0001.html>


More information about the Python-list mailing list