你怎么能像这样从父类中暗示一个类?
class Cls1:
class Cls2:
p2: int
class Cls3:
p3: Cls2 # undefined name 'Cls2'
class Cls4:
p4: Cls2 # undefined name 'Cls2'
你怎么能像这样从父类中暗示一个类?
class Cls1:
class Cls2:
p2: int
class Cls3:
p3: Cls2 # undefined name 'Cls2'
class Cls4:
p4: Cls2 # undefined name 'Cls2'
是的,请参阅PEP 484 §Forward References:
当类型提示包含尚未定义的名称时,该定义可以表示为字符串文字,稍后再解析。
这种情况经常发生的情况是定义容器类,其中被定义的类出现在某些方法的签名中。
因此,在您的示例中,请在字符串中引用尚未定义的类型:
class Cls1:
class Cls2:
p2: int
class Cls3:
p3: 'Cls2'
class Cls4:
p4: 'Cls2'
请注意,虽然 Python 很乐意接受上述内容,但 mypy (v0.641) 似乎有一个错误并且找不到Cls2
.