代码如下:
class A:
    def __init__(self,a:A):
        pass
Python 版本(Anaconda):Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] on win32
这段代码运行时就会触发NameError:name 'A' is not defined异常。那么这个异常的引发是因为解释器本身的限制还是因为写法有误?我查阅官方文档(PEP 3107)后并未找到有关内容。毕竟这样的需求还是经常有的,比如一个容器类的元素应该可以是这个类的实例。谢谢!
|  |      1Mohanson      2019-02-10 15:51:06 +08:00 via Android  1 对的,使用 a: 'A' 即可: 注解类型加单引号。 | 
|  |      2Mohanson      2019-02-10 15:52:45 +08:00 via Android  1 | 
|      3fourstring OP @Mohanson #1 那这样的话您使用的 ide 会有代码提示吗?我用的 PyCharm 2018.3 似乎在接下来的编码中并不会提示我 a 是一个 A 类型的变量(比如输入 a.不会提示成员) | 
|      4fourstring OP @Mohanson #1 不好意思打扰了,我刚刚的问题在于对 A 的内部类 B 进行注解的时候没有使用'A.B',而是使用了'B',最后请教一些单引号注释类型是在何处规定的呢? | 
|  |      5Mohanson      2019-02-10 16:03:14 +08:00 via Android @fourstring 目前是没有的 | 
|  |      6Trim21      2019-02-10 16:05:13 +08:00  1 | 
|  |      7Mohanson      2019-02-10 16:09:00 +08:00 via Android  1 | 
|  |      8Mohanson      2019-02-10 16:11:37 +08:00 via Android 因为官方都是这么用,我其实也没细究原始出处 | 
|  |      9thautwarm      2019-02-10 16:16:09 +08:00  2 from __future__ import annotations 就可以了。 不默认支持是因为这个会 break 一些特殊的包。 | 
|  |      10CSM      2019-02-10 23:03:49 +08:00 via Android  1 |