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