A typing question

Paulo da Silva p_d_a_s_i_l_v_a_ns at nonetnoaddress.pt
Sun Oct 30 00:10:54 EDT 2022


Às 01:14 de 30/10/22, Thomas Passin escreveu:
> On 10/29/2022 1:45 PM, Paulo da Silva wrote:
>> Hi!
>>
>> Consider this simple script ...
>>
>> ___________________
>> from typing import List, Optional
>>
>> class GLOBALS:
>>      foos=None
>>
>> class Foo:
>>
>>      def __init__(self):
>>          pass
>>
>> class Foos:
>>      Foos: List[Foo]=[]
>>      # SOME GLOBALS ARE USED HERE in a real script
>>
>>      def __init__(self):
>>          pass
>>
>> GLOBALS.foos: Optional[Foos]=Foos()
>> ___________________
>>
>> Running mypy on it:
>> pt9.py:18: error: Type cannot be declared in assignment to non-self 
>> attribute
>> pt9.py:18: error: Incompatible types in assignment (expression has 
>> type "Foos", variable has type "None")
>> Line  18 is last line and pt9.py is the scrip.
>>
>> Replacing last line by
>> GLOBALS.foos=Foos()
>> and running mypy still gives the second error.
>> pt9.py:18: error: Incompatible types in assignment (expression has 
>> type "Foos", variable has type "None")
>>
>> What is the common practice in these cases?
>>
>> Thank you.
>>
> 
> I don't understand
> 
> class Foos:
>       Foos: List[Foo]=[]
> 
> If "Foos" is supposed to be a class attribute, then it cannot have the 
> same name as the class.
Yes it can.
You can refer it anywhere by Foos.Foos as a list of Foo elements.




More information about the Python-list mailing list