python - 如何让 pyreverse 接受并优先化类型提示?
问题描述
我想根据我的 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?
非常感谢 :)。
解决方案
现在有效,也许 12 个月前它没有
其次,这是一个无效的类型,运行 mypy 它会告诉你。充其量它应该是可选的[List[str]]。更好的是将其初始化为[]
至于幕后发生的事情——
一些直接使用 python 源代码的工具将导入或运行代码,然后操作活动对象。Pydoc 就是一个例子。
据我所知, pyreverse使用 astroid,它只是解析代码而不尝试运行它,而是做出某些“推论”。因此,不会期望获取所有动态的内容,例如在应用程序运行时其类型会发生变化的变量。