具有循环依赖关系的两个相互依赖的类的类型提示

我知道通常不鼓励循环依赖——然而,在 C# 和 TypeScript 中,我有时发现它们很有用。这可能是我缺乏使用 python 的经验,或者我的想法错误或错过了谷歌搜索的正确词。我将如何解决以下问题?


我正在尝试创建一个处理请求的类,并且这些处理事件中的每一个都伴随着一个上下文。所以,我想创建处理程序类和上下文类 - 但它们是相互依赖的,并且 linter 在第 2 行给了我问题,说HandlerService没有定义。


示例(虚拟):


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


翻翻过去那场雪
浏览 242回答 2
2回答

慕雪6442864

您可以使用前向引用,即使用service: "HandlerService"代替service: HandlerService。请注意,在未来的 Python 版本中,这将变得过时,因为注释评估顺序不会在函数定义时完成,而是在所有函数都已定义之后完成。您可以from __future__ import annotations在 python 3.7 及更高版本中通过导入开始使用此行为。有关详细信息,请参阅PEP563。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python