Fwd: A typing question

Peter J. Holzer hjp-python at hjp.at
Sun Oct 30 09:37:29 EDT 2022


On 2022-10-30 09:23:27 -0400, Thomas Passin wrote:
> On 10/30/2022 6:26 AM, Peter J. Holzer wrote:
> > On 2022-10-29 23:59:44 +0100, Paulo da Silva wrote:
> > > The funny thing is that if I replace foos by Foos it works because it gets
> > > known by the initial initialization :-) !
> > > 
> > > ________________________
> > > from typing import List, Optional
> > > 
> > > class GLOBALS:
> > >      Foos: Optional[Foos]=None
> > [...]
> > > class Foos:
> > 
> > That seems like a bug to me. What is the «Foos» in «Optional[Foos]»
> > referring to?
> > 
> > If it's the class attribute «Foos» then that's not a type and even if
> > its type is inferred that's not the same as «Optional[it's type]», or is
> > it?
> > 
> > If it's referring to the global symbol «Foos» (i.e. the class defined
> > later) that hasn't been defined yet, so it shouldn't work (or
> > alternatively, if forward references are allowed it should always work).
> 
> Quoting a forward-referenced type is the way to use one.  Unquoted types
> need to have been declared already.

Yes. I was referring to the code as written. Why does that work? I don't
think it should.

        hp

-- 
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp at hjp.at         |    -- Charles Stross, "Creative writing
__/   | http://www.hjp.at/ |       challenge!"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://mail.python.org/pipermail/python-list/attachments/20221030/0647ccaa/attachment.sig>


More information about the Python-list mailing list