代码之家  ›  专栏  ›  技术社区  ›  knut

具有循环依赖项的两个相互依赖类的类型提示[重复]

  •  0
  • knut  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我知道循环依赖性通常是不受欢迎的,然而,在C和typescript中,有时我发现它们很有用。这可能是因为我对python缺乏经验,或者我想的是错误的方法,或者是错过了google需要的正确单词。我如何解决以下问题?

    我试图创建一个处理请求的类,每个处理事件都伴随着上下文。所以,我想创建处理程序类和上下文类——但它们是依赖的,而linter在第2行给了我一些问题,说 手工服务 未定义。

    示例(虚拟):

    class HandlerContext:
        def __init__(self, service : HandlerService, uuid : str):
            self.service = service
            self.uuid = uuid
    
    class HandlerService:
        def handle_request(self, context : HandlerContext, data : object):
            # do things ...
            pass
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   RunOrVeith    6 年前

    你可以使用 forward references ,即使用 service: "HandlerService" 而不是 service: HandlerService .

    请注意,在将来的Python版本中,这将变得过时,因为注释计算顺序不会在函数定义时完成,而是在定义完所有注释之后。您可以使用 from __future__ import annotations 在python 3.7和更高版本中导入。见 PEP563 详情。