[Python-Dev] PEP 549: Instance Properties (aka: module properties) (original) (raw)

Ivan Levkivskyi levkivskyi at gmail.com
Thu Sep 14 15:11:05 EDT 2017


(sorry for obvious mistakes in the example in previous e-mail)

On 14 September 2017 at 21:08, Ivan Levkivskyi <levkivskyi at gmail.com> wrote:

On 14 September 2017 at 01:13, Guido van Rossum <guido at python.org> wrote:

That last sentence is a key observation. Do we even know whether there are (non-toy) things that you can do in principle with class assignment but which are too slow in practice to bother? And if yes, is getattr fast enough? @property? I myself have never implemented deprecation warnings management nor lazy loading, so it is hard to say if class assignment is fast enough. For me it is more combination of three factors: * modest performance improvement * some people might find getattr clearer than class assignment * this would be consistent with how stubs work IMO we're still looking for applications. How about this def allowforwardreferences(*allowed): callerglobals = sys.getframe().globals def typinggetattr(name): if name in allowed: return name raise AttributeError(...) callerglobals.getattr = typinggetattr from typingextensions import allowforwardreferences allowforwardreferences('Vertex', 'Edge') T = TypeVar('T', bound=Edge) class Vertex(List[Edge]): def copy(self: T) -> T: ... class Edge: ends: Tuple[Vertex, Vertex] ... Look mum, no quotes! :-) -- Ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20170914/5984d667/attachment.html>



More information about the Python-Dev mailing list