假设我有以下目录结构:
Folder PATH listing
Volume serial number is 986C-80E1
C:.
test.py
__init__.py
No subfolders exist
__init__.py
为空白。在test.py
. 我有以下代码:
class Employee:
def __init__(self, identifier, name, address):
self.address = None
class Manager(Employee):
pass
class Secretary(Employee):
pass
class Address:
def __init__(self, street_num, street_name):
self.street_num = street_num
self.street_name = street_name
这里的想法是实现简单的一对多组合。也就是说,所有Employee
子类型也包含一个Address
实例。
然后我运行pyreverse -S -o uml.png .
生成一个 UML 类图并得到以下信息:
pyreverse
不承认Employee
和之间存在复合组件关系Address
。但是,如果我重构test.py
为以下内容:
class Employee:
def __init__(self, identifier, name):
self.address = None
class Manager(Employee):
pass
class Secretary(Employee):
pass
class Address:
def __init__(self, street_num, street_name):
self.street_num = street_num
self.street_name = street_name
bob = Manager(1, "Bob")
bob.address = Address(1, "main ave")
我知道这Address
与Manager
.
这在技术上不是不正确的吗?据我了解,该关联应该与父类有关Employee
。为什么pyreverse
认为那Address
只是一个组成部分Manager
?