如何从 Python 源代码中获取 Class 图?
How to get Class diagram from Python source code?
我尝试从 Client
文件夹中 pyreverse
的 Python 源代码中获取 class 图,但它需要 __init__.py
(venv) C:\Users\User\Desktop\project> pyreverse Client
parsing Client\__init__.py...
Failed to import module Client\__init__.py with error:
No module named Client\__init__.py.
我找不到任何解决方案。有没有办法得到图表?
更新:
Client
文件夹中有很多文件:
Client.py
GUI.py
script.py
...
这是 Client.py
代码的一部分:
import threading
class Client:
def __init__(self):
self.socket = None
self.listen_socket = None
self.buff_dict = {}
self.message_list_dict = {}
self.lock = threading.Lock()
self.target = None
self.listen_flag = True
这是 GUI.py
代码的一部分:
import tkinter as tk
class Window(object):
def __init__(self, title, font, client):
self.title = title
self.font = font
self.client = client
self.root = tk.Tk()
self.root.title(title)
self.build_window()
def build_window(self):
pass
class LoginWindow(Window):
def __init__(self, client, font):
super(LoginWindow, self).__init__('Login', font, client)
self.build_window()
似乎您在包含 Client.py
的文件夹中没有 __init__.py
。您应该能够只创建文件而无需在其中添加任何内容,因为其主要目的是指示该文件夹是一个包。
请参阅 this SO question 关于 __init__.py
以获取有关该文件的更深入的解释。
感谢@Anwarvic 和@b运行o,我想出了解决方案。
首先,在 Client
文件夹中创建空 __init__.py
文件:
(venv) C:\Users\User\Desktop\project\Client> type NUL > __init__.py
然后到我要获取class图的Client
文件夹的父文件夹:
(venv) C:\Users\User\Desktop\project> pyreverse Client -o png
但是我得到了这个错误:
The output format 'png' is currently not available.
Please install 'Graphviz' to have other output formats than 'dot' or 'vcg'.
经过一些调查,我找到了这个。然后我可以运行 pyreverse
没有任何错误。
这是我使用 pyreverse
:
得到的 class 图
最方便的方法应该是拥有一个 Jupyter notebook 扩展,它可以动态生成笔记本中定义的 类 图表,就像变量检查器一样 - 可能可以选择指定替代根,例如 datetime
在第一个答案中
creating UML charts by Pylint/pyreverse within Jupyter labs / console.
注意:这将消除 pyreverse
要求显示的 类 是模块一部分的限制。
我尝试从 Client
文件夹中 pyreverse
的 Python 源代码中获取 class 图,但它需要 __init__.py
(venv) C:\Users\User\Desktop\project> pyreverse Client
parsing Client\__init__.py...
Failed to import module Client\__init__.py with error:
No module named Client\__init__.py.
我找不到任何解决方案。有没有办法得到图表?
更新:
Client
文件夹中有很多文件:
Client.py
GUI.py
script.py
...
这是 Client.py
代码的一部分:
import threading
class Client:
def __init__(self):
self.socket = None
self.listen_socket = None
self.buff_dict = {}
self.message_list_dict = {}
self.lock = threading.Lock()
self.target = None
self.listen_flag = True
这是 GUI.py
代码的一部分:
import tkinter as tk
class Window(object):
def __init__(self, title, font, client):
self.title = title
self.font = font
self.client = client
self.root = tk.Tk()
self.root.title(title)
self.build_window()
def build_window(self):
pass
class LoginWindow(Window):
def __init__(self, client, font):
super(LoginWindow, self).__init__('Login', font, client)
self.build_window()
似乎您在包含 Client.py
的文件夹中没有 __init__.py
。您应该能够只创建文件而无需在其中添加任何内容,因为其主要目的是指示该文件夹是一个包。
请参阅 this SO question 关于 __init__.py
以获取有关该文件的更深入的解释。
感谢@Anwarvic 和@b运行o,我想出了解决方案。
首先,在 Client
文件夹中创建空 __init__.py
文件:
(venv) C:\Users\User\Desktop\project\Client> type NUL > __init__.py
然后到我要获取class图的Client
文件夹的父文件夹:
(venv) C:\Users\User\Desktop\project> pyreverse Client -o png
但是我得到了这个错误:
The output format 'png' is currently not available.
Please install 'Graphviz' to have other output formats than 'dot' or 'vcg'.
经过一些调查,我找到了这个pyreverse
没有任何错误。
这是我使用 pyreverse
:
最方便的方法应该是拥有一个 Jupyter notebook 扩展,它可以动态生成笔记本中定义的 类 图表,就像变量检查器一样 - 可能可以选择指定替代根,例如 datetime
在第一个答案中
creating UML charts by Pylint/pyreverse within Jupyter labs / console.
注意:这将消除 pyreverse
要求显示的 类 是模块一部分的限制。