如何在另一个内部类中使用一个内部类作为类型注释?

问题描述 投票:0回答:1

我有下一个类结构:

class Root:
    @dataclass
    class Leaf:
        pass

    @dataclass
    class Node:
        leaf: Leaf

问题是PyCharm看不到

Leaf
类,我也尝试将其指定为
leaf: Root.Leaf
甚至
'Root'.Leaf
...结果相同。
如果类型是另一个内部类,如何在内部类中声明字段类型? python 中可以吗?
P.S. 我可以将
Leaf
类作为
Node
类的内部类,但我对我的示例感兴趣。

python python-3.x inner-classes
1个回答
0
投票

通常你不能从另一个内部类引用一个内部类,但是为了类型注释的目的,你可以使用字符串进行这样的前向引用:

from dataclasses import dataclass

class Root:
    @dataclass
    class Leaf:
        pass

    @dataclass
    class Node:
        leaf: 'Root.Leaf'

print(Root.Node(Root.Leaf()).leaf)

这将通过静态类型检查和输出:

Root.Leaf()
© www.soinside.com 2019 - 2024. All rights reserved.