typing: property/setter and lists? [RESOLVED ERRATA]

dn PythonList at DancesWithMice.info
Fri Nov 4 03:52:24 EDT 2022


On 04/11/2022 07.50, Chris Angelico wrote:
> On Fri, 4 Nov 2022 at 05:48, Paulo da Silva
> <p_d_a_s_i_l_v_a_ns at nonetnoaddress.pt> wrote:
>>
>> Às 05:32 de 03/11/22, Paulo da Silva escreveu:
>>> Às 03:24 de 03/11/22, Paulo da Silva escreveu:
>>>> Hi!
>>>>
>>>> And a typing problem again!!!
>>>> _______________________________________
>>>> class C:
>>>>       def __init__(self):
>>>>           self.__foos=5*[0]
>>>>
>>>>       @property
>>>>       def foos(self) -> list[int]:
>>>>           return self.__foos
>>>>
>>>>       @foos.setter
>>>>       def foos(self,v: int):
>>>>           self.__foos=[v for __i in self.__foos]
>>>>
>>>> c=C()
>>>> c.foos=5
>>>> print(c.foos)
>>>> _______________________________________
>>>>
>>>> mypy gives the following error:
>>>> error: Incompatible types in assignment (expression has type "int",
>>>> variable has type "List[int]")
>>>>
>>>> How do I turn around this?
>>>>
>>> Changing def foos(self) -> list[int]:  to
>>>    def foos(self) -> Union[list[int]]:
>> I meant, of course,
>> def foos(self) -> Union[list[int],int]:
>>
> 
> Ohhh! I thought this was triggering a strange quirk of the checker in
> some way...


Yes, these personal styles (?quirks) are off-putting to others.

Plus "_" means (more or less) "not used anymore"
and for most of us, a weak-identifier name such as "i" is indeed "an 
indexer/counter/... "
Accordingly, the question becomes: why not follow the crowd - unless you 
tell me that this is a team/company convention?

...and whilst I'm griping,
"To help us to help you please copy-paste the *exact* message"
has been followed by:
"I'm sorry. A bad transposition of the text."

copy-paste for the win!
(and to keep others happy to spend their voluntary time helping you - 
more working-with-the-team thinking to consider - please)
-- 
Regards,
=dn


More information about the Python-list mailing list