在字典中转发 Python 中的类声明

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

这个问题在本论坛已经争论过很多次了。然而,有一种情况我还没有找到好的解决方法。

from __future__ import annotations

class ClassA:
    pass

class ClassC:
    c : ClassB
    children : dict = {'A': ClassA, 'B': ClassB}

class ClassB:
    pass

有趣的是,语句

c : ClassB
工作正常,但在字典中引用
ClassB
会生成错误:
NameError: name 'ClassB' is not defined.

有办法让这段代码工作吗?

python dictionary forward-declaration
1个回答
0
投票
from __future__ import annotations


class ClassA:
    pass


class ClassC:
    c: ClassB
    children: dict = {"A": ClassA}


class ClassB:
    pass

ClassC.children.setdefault("B", ClassB)

这可以是解决方案

© www.soinside.com 2019 - 2024. All rights reserved.