[Tutor] __class__.__name__ for literal integer causes SyntaxError

Dave Angel d at davea.name
Thu Apr 5 11:47:16 CEST 2012


On 04/04/2012 10:27 PM, Emile van Sebille wrote:
> On 4/4/2012 6:27 PM Tim Johnson said...
>> See the following console session:
>>>>> 4.6.__class__.__name__
>
> The first decimal is considered to be part of the float literal here...
>
>
>> 'float'
>>>>> 6.__class__.__name__
>
> ... _and_ here...
>
>>    File "<stdin>", line 1
>>      6.__class__.__name__
>>                ^
>> SyntaxError: invalid syntax
>
> ... which explains the error -- the float value is improper.
>
>>>>> x = 6
>>>>> x.__class__.__name__
>> 'int'
>>>>> "me".__class__.__name__
>> 'str'
>> I note that the reference to '__class__.__name__' for string and
>> float literals is executed, but that there is a SyntaxError for that
>> same reference of a 'int' literal.
>>
>> I'd welcome comments, explanations or URLs to discussions.
>> thanks
>
> Try
>
> >>> (6).__class__.__name__
> 'int'
> >>>
>
> HTH,
>
> Emile

Emile gave you the explanation.  But another way to convince the parser
to treat the decimal point differently is to leave a space(s) between
the number  and the separator.

>>> 6.__class__.__name__
  File "<stdin>", line 1
    6.__class__.__name__
              ^
SyntaxError: invalid syntax

>>> 6  .__class__.__name__
'int'
>>>



-- 

DaveA



More information about the Tutor mailing list