Python pyreverse能否识别函数内使用的类并生成对应UML关联关系?
pyreverse默认仅采集类实例属性绑定的关联类,你示例中ClassC的__init__方法里将ClassB实例绑定到了self.object_b,属于类的成员属性关联,会被直接识别;而perform方法内的object_a是方法局部变量,没有绑定到类实例上,默认不会被判定为ClassC的关联类。
你可以通过以下几种方式实现需求:
- 开启全量关联分析参数
执行生成命令时添加-A参数,即可开启所有关联的识别逻辑,包含类方法内部局部变量实例化的类:
执行后生成的类图会自动添加pyreverse -o png -A 你的模块文件名.pyClassC到ClassA的依赖关联线。 - 给局部变量添加显式类型标注
针对Python3.6及以上版本,给方法内的局部变量加上类类型标注,pyreverse也可以识别到关联关系:class ClassC(object): def __init__(self): self.object_b = ClassB() def perform(self): # 显式标注变量类型 object_a: ClassA = ClassA() - 手动添加强制关联标记
如果需要固定展示关联不受代码改动影响,可以在类定义上方添加pyreverse可识别的依赖注释标记:# @depends ClassA class ClassC(object): def __init__(self): self.object_b = ClassB() def perform(self): object_a = ClassA()
内容的提问来源于stack exchange,提问作者feelfree
相关产品推荐
相关产品推荐

