On Sat, Jun 26, 2021 at 9:25 AM Daniel Walker <nickel...@gmail.com> wrote:

> I was recently using the cmd module for a project where my CLI
> could connect to and interact with another host.  I implemented prompt in
> such a way that it would show the IP address when connected.  I.e.,
>
> class MyCmd(cmd.Cmd):
>     ...
>
>     @property
>     def prompt(self) -> str:
>         if self.remote_host.connected():
>             return f'> ({self.remote_host.ip}) '
>         else:
>             return '> '
>
> This worked perfectly fine... until I ran mypy.  mypy complained because,
> in cmd.Cmd, prompt is a class attribute.
>
> Looking at cmd.py, this seems like an odd design choice as all of the
> references to cmd are through the instance (i.e., self.prompt).
>

You misread the typeshed stub. Where you see these lines in cmd.pyi

class Cmd:
    prompt: str
    identchars: str
    ruler: str
    ...

those are all instance attribute declarations.

I think that you're running into a different mypy bug, which is that you
can't override a plain attribute with a property in a subclass.

I think there's already a bug for that in the mypy tracker, but I can't
find it right now.

-- 
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him **(why is my pronoun here?)*
<http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/TNDQVFAA3XLOOMRQ5RFMRMW52Y3DF2ZV/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to