A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-dev/2017-September/149554.html below:

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

[Python-Dev] PEP 549: Instance Properties (aka: module properties) [Python-Dev] PEP 549: Instance Properties (aka: module properties)Ivan Levkivskyi levkivskyi at gmail.com
Thu Sep 14 15:08:34 EDT 2017
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>
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4