Computer >> Máy Tính >  >> Lập trình >> Python

Hỗ trợ trình duyệt lớp Python

pyclbr mô-đun trong thư viện Python trích xuất thông tin về các hàm, lớp và phương thức được định nghĩa trong mô-đun Python. Thông tin được trích xuất từ ​​mã nguồn Python chứ không phải bằng cách nhập mô-đun.

Mô-đun này xác định readmodule () hàm trả về tên lớp cấp mô-đun ánh xạ từ điển tới bộ mô tả lớp. Hàm lấy tên mô-đun làm tham số. Nó có thể là tên của một mô-đun trong một gói. Trong trường hợp đó, đường dẫn là một chuỗi các đường dẫn thư mục được thêm vào trước sys.path, được sử dụng để định vị mã nguồn của mô-đun.

Đoạn mã sau sử dụng hàm readmodule () để phân tích cú pháp các lớp và phương thức trong mô-đun socket của thư viện Python.

 import pyclbrmod =pyclbr.readmodule ("socket") def show (c):s ="class" + c.name print (s + ":") method =c.methods.items () for method, lineno trong các phương thức:print ("def" + phương thức) print () cho k, v trong mod.items ():show (v) 
 class IntEnum:class IntFlag:def _missing_ def _create_pseudo_member_ def __or__ def __and__ def __xor__ def __invert__class _GiveupOnSendfile:class socket:def __init__ def __enter__se defse defse_exit__ def __repndfile_gói_sửa_gói_sửa_gói_sửa_gói_sửa_gói_sửa_gói_sửa_gói_sửa_gói_sửa_gói_sửa_gói_sửa_gói_sửa_ghi def _decref_socketios def _real_close def close def detach def family def type def get_inhenged def set_inhengedclass SocketIO:def __init__ def readinto def write def readable def có thể ghi được def seekable def fileno def name def mode def close 

Mô-đun pyclbr cũng xác định readmodule_ex () hàm trả về một từ điển chứa một hàm hoặc các bộ mô tả lớp cho mỗi hàm và lớp được xác định trong mô-đun. Từ điển trả về ánh xạ chức năng cấp mô-đun và tên lớp với các bộ mô tả của chúng. Các đối tượng lồng nhau được nhập vào từ điển con của cha mẹ chúng.

>>> x =pyclbr.readmodule_ex ('socket')>>> for k, v in x.items ():print (k, v) IntEnum  IntFlag  _intenum_converter  _GiveupOnSendfile  ổ cắm  fromfd  fromshare  socketpair Đối tượng  Đối tượng SocketIO  getfqdn  create_connection 
 Chức năng này có thể được sử dụng cùng với các mô-đun tùy chỉnh cũng như để tìm nạp thư mục của các lớp và phương thức do người dùng xác định. 

Trong ví dụ sau, một mô-đun 'tam giác.py' được sử dụng để lấy cấu trúc lớp của nó.

 # tam giác.py nhập khẩu lớp toán Tam giác:def __init __ (self, a, b, c):self.a =a self.b =b self.c =c def area (self):s =(self.a + self.b + self.c) / 2 area =math.sqrt (s * (s-self.a) * (s-self.b) * (s-self.c)) trả về areaclass EquiTriangle (Tam giác):def __init __ (self, a):b =a c =a super () .__ init __ (a, b, c) def area (self):area =math.sqrt (3) * pow (self.a, 2) / 4 return khu vực 

Bây giờ chúng ta sẽ có được các lớp và phương thức trong mô-đun 'tam giác'.

>>> br =pyclbr.readmodule_ex ('tam giác')>>> for i, j in br.items ():print (i, j.methods) Triangle {'__init__':3, 'area':7} EquiTriangle {'__init__':12, 'area':16} 

Mô-đun pyclbr xác định hai đối tượng - đối tượng Lớp và đối tượng Hàm.

Chức năng đối tượng sở hữu các thuộc tính sau

tệp
Tên tệp trong đó hàm được xác định.
mô-đun
Tên của mô-đun xác định chức năng được mô tả.
tên
Tên của hàm.
lineno
Số dòng trong tệp nơi các định nghĩa bắt đầu.
mẹ
Đối với các hàm cấp cao nhất, Không có. Đối với các hàm lồng nhau, hàm cha.
con
Tên ánh xạ từ điển tới các bộ mô tả cho các hàm và lớp được thiết lập.

Lớp học đối tượng có thêm hai thuộc tính ngoài các thuộc tính trên

siêu
Danh sách các đối tượng Lớp mô tả các lớp cơ sở trực tiếp của lớp đang được mô tả.
phương pháp
Phương thức ánh xạ từ điển đặt tên cho số dòng.