[Python-Dev] PEP 549: Instance Properties (aka: module properties) (original) (raw)
Ivan Levkivskyi levkivskyi at gmail.com
Thu Sep 14 15:08:34 EDT 2017
- Previous message (by thread): [Python-Dev] PEP 549: Instance Properties (aka: module properties)
- Next message (by thread): [Python-Dev] PEP 549: Instance Properties (aka: module properties)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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 allow_forward_references(*allowed): caller_globals = sys._getframe().globals def typing_getattr(name): if name in allowed: return name raise AttributeError(...) caller_globals.getattr = typing_getattr
from typing_extensions import allow_forward_references allow_forward_references('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/71f6a9f3/attachment.html>
- Previous message (by thread): [Python-Dev] PEP 549: Instance Properties (aka: module properties)
- Next message (by thread): [Python-Dev] PEP 549: Instance Properties (aka: module properties)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]