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/