【问题标题】:How to make pyreverse accept and priotize type hints?如何让 pyreverse 接受并优先化类型提示?
【发布时间】:2020-11-30 17:56:16
【问题描述】:

我想根据我的 Python(3) 源代码自动生成 UML 类图。这种情况下的挑战是在对象实例化时并非所有信息都可用。某些属性必须稍后分配,因此当最初创建对象时,某些属性的类型为无。稍后它们将具有暗示的类型。现在我希望 UML 显示提示的类型,而不是在创建对象时最初分配的类型。

以下来源:

from typing import List

class Test:
    def __init__(self):
        self.a: int = 0
        self.b: List[str] = None

产生以下 UML:

现在我希望属性 b 在 UML 中具有 List[str] 类型,并覆盖 pylint 认为的 b 类型。有没有办法实现这一点,还是我必须手动绘制我的 UML?

非常感谢:)。

【问题讨论】:

    标签: python uml pylint pyreverse


    【解决方案1】:

    现在有效,也许 12 个月前还没有

    其次,这是一个无效的类型,运行 mypy 它会告诉你。充其量它应该是可选的[List[str]]。更好的是初始化为[]

    至于幕后发生了什么——

    一些直接使用 python 源代码的工具将导入或运行代码,然后操作活动对象。 Pydoc 就是一个例子。

    据我所知,pyreverse uses astroid,它只是解析代码而不尝试运行它,而是确定"inferences"。因此,它不会被期望获取所有动态的东西,例如在应用运行时其类型会发生变化的变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-30
      • 2016-06-10
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多