类的递归定义[python]

时间:2019-10-28 13:32:14

标签: python recursion

例如,我需要在类中进行递归定义

class Formula:
    root: str
    first: Optional[Formula]
    second: Optional[Formula]
    def __init__(self, root: str, first: Optional[Formula] = None,
             second: Optional[Formula] = None) -> None:

我收到以下错误:“未解决的参考公式”

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用字符串代替值本身。

class Formula:
    root: str
    first: 'Optional[Formula]'
    second: 'Optional[Formula]'

或(在Python 3.7或更高版本中)导入annotations未来。

from __future__ import annotations

class Formula:
    root: str
    first: Optional[Formula]
    second: Optional[Formula]

有关详细信息,请参见PEP-563。今天,类型提示已作为表达式求值。将来,从Python 4开始,它们将简单地以未评估的形式存储为类的__annotations__属性中的字符串。