Cách sử dụng pyreverse trong Python

điều này có thể thú vị khi xem xét, nhưng trong trường hợp này, tôi nghĩ sẽ tốt hơn nếu để pyreverse xây dựng tệp hình ảnh cho tôi để tôi có thể đưa nó vào đây

class SampleCase[object]:
    def __init__[self]:
        return

args = shlex.split['-o png -p example explore_pyreverse.py']
#Run[args]

Điều này thực sự hóa ra không hoạt động. Mặc dù hàm run_pyreverse truyền vào các đối số nhưng nó [Run] có một phương thức

Chạy. load_command_line_configuration

Điều đó lấy các đối số làm đối số, nhưng khi lớp Run sử dụng nó, nó gọi nó mà không chuyển vào các đối số mà nó đã được đưa ra và thay vào đó sao chép sys. lát cắt argv mà hàm run_pyreverse đã tạo. Để sử dụng lớp, tôi sẽ phải vá mô-đun sys, điều này có vẻ sai và quá nhiều việc. Có lẽ quy trình phụ sẽ hoạt động

subprocess.call[['pyreverse'] + args]

Điều đó hơi khó chịu, nếu chúng ta có một ví dụ phức tạp hơn thì sao?

[[lỗi, thông báo lỗi,. ]] Một Composite để giữ và thực thi các Thành phần

import ape.components.component as component
file_name = component.__file__.rstrip['c']
command = 'pyreverse -o png -p componentplain {0}'.format[file_name]
subprocess.call[shlex.split[command]]

Điều này tạo ra một tệp có tên là 'classes_componentplain. png’ [sử dụng -p biến nó thành sơ đồ cấp mô-đun, do đó, nó sẽ chọn tất cả các lớp, do đó có các lớp số nhiều].

Giá trị chung của một mô-đun

Đó vẫn không phải là một ví dụ đặc biệt thú vị, ít nhất là không trực quan. Đây là ví dụ được đưa ra trên blog pyreverse để hiển thị tất cả các phụ thuộc nhưng loại bỏ chi tiết để dễ hiểu hơn

command = 'pyreverse -o png -ASmy -k {0} -p hortator'.format[file_name]
subprocess.call[shlex.split[command]]

Đối số phụ thuộc Tùy chọn Mô tả-AHiển thị tất cả tổ tiên-Hiển thị tất cả các cộng sự-myAdd mô-đun để đặt tên [mô-đun? có. ]-kChỉ hiển thị tên lớp [không có phương thức hoặc thuộc tính]

Thêm chi tiết

Ví dụ trước rất hữu ích để hiển thị các mối quan hệ giữa lớp Hortator và các lớp khác, nhưng bạn cũng có thể có được cái nhìn chi tiết hơn về chỉ mô-đun hortator

command = 'pyreverse -c Composite -mn -a1 -s1 -f ALL -o png {0}'.format[file_name]
subprocess.call[shlex.split[command]]

Trong trường hợp này, chúng tôi đã chỉ định lớp nên nó sẽ chỉ ghi lại Composite, ngay cả khi có các lớp khác trong tệp. Nó tạo một tệp có tên Composite. png

Nhà máyUml

Bây giờ tôi nhìn vào nó, có vẻ như định dạng không đẹp như tôi muốn. So sánh điều này với plantuml

Nhưng việc tạo biểu đồ plantuml rất tẻ nhạt và cần rất nhiều công việc xây dựng cũng như tra cứu cú pháp. Trên hết, đây chỉ là cách triển khai tạm thời, do đó bao gồm cả DummyClass , khi mã thay đổi, tôi có thể tạo lại tệp này và . Ngoài ra, nếu cái này được nhúng trực tiếp vào mô-đun máy làm vườn thì mỗi khi tôi dệt nó, sơ đồ sẽ tự cập nhật mà tôi không cần chú ý đến nó.

Phần kết luận

Kỳ vọng của tôi là tôi có thể nhúng pyreverse vào tài liệu để khi nó được dệt sẽ có cập nhật tự động. Điều này trong thực tế làm việc. Những việc tiếp theo cần làm để làm cho nó hữu dụng hơn có thể là

Làm thế nào để cài đặt pyreverse?

Yêu cầu. Cài đặt Pylint từ Cài đặt . Nếu bạn đã cài đặt anaconda, hãy sử dụng pip install -U pylint để cập nhật Pylint để pyreverse được thêm vào thư mục tập lệnh. Bây giờ hãy thêm đường dẫn của các mô-đun python mà bạn muốn tạo tài liệu vào PYTHONPATH.

Làm cách nào để tạo UML từ mã python?

Trong cửa sổ công cụ Dự án, bấm chuột phải vào một mục mà bạn muốn tạo sơ đồ và chọn Sơ đồ. Hiển thị sơ đồ Ctrl+Alt+Shift+U ]. Trong danh sách mở ra, chọn Sơ đồ lớp Python. PyCharm tạo sơ đồ UML cho các lớp và phần phụ thuộc của chúng

Chủ Đề