Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

รองรับเบราว์เซอร์คลาส Python


pyclbr โมดูลในไลบรารี Python จะดึงข้อมูลเกี่ยวกับฟังก์ชัน คลาส และวิธีการที่กำหนดไว้ในโมดูล Python ข้อมูลถูกดึงมาจากซอร์สโค้ด Python แทนที่จะนำเข้าโมดูล

โมดูลนี้กำหนด readmodule() ฟังก์ชันที่ส่งคืนชื่อคลาสระดับโมดูลการแมปพจนานุกรมไปยังตัวบอกคลาส ฟังก์ชันใช้ชื่อโมดูลเป็นพารามิเตอร์ อาจเป็นชื่อของโมดูลภายในแพ็คเกจ ในกรณีนั้นพาธคือลำดับของพาธไดเร็กทอรีที่ต่อท้าย sys.path ซึ่งใช้เพื่อค้นหาซอร์สโค้ดของโมดูล

โค้ดต่อไปนี้ใช้ฟังก์ชัน readmodule() เพื่อแยกวิเคราะห์คลาสและเมธอดในโมดูลซ็อกเก็ตของไลบรารี Python

นำเข้า pyclbrmod =pyclbr.readmodule("socket")def show(c):s ="class" + c.name print (s + ":") method =c.methods.items() สำหรับ method, lineno ในวิธีการ:พิมพ์ (" def " + วิธี) พิมพ์ () สำหรับ k, v ใน mod.items ():แสดง (v)
 ระดับ IntEnum:ระดับ IntFlag:def _missing_ def _create_pseudo_member_ def __or__ def __and__ def __xor__ def __invert__class _GiveupOnSendfile:ซ็อกเก็ตระดับ:def __init__ def __enter__ def __exit__ def __repr__ def __getstate__ def dup def ยอมรับ def Makefile def _sendfile_use_sendfile def _sendfile_use_send def _check_sendfile_params def sendfile def _decref_socketios def _real_close def close def detach def family def type def get_inheritable def set_inheritableclass SocketIO:def __init__ def readinto def เขียน def อ่านได้ def เขียนได้ def ค้นหาได้ def file ไม่มีชื่อ def โหมด def ปิด

โมดูล pyclbr ยังกำหนด readmodule_ex() ฟังก์ชันที่ส่งคืนพจนานุกรมที่มีฟังก์ชันหรือตัวอธิบายคลาสสำหรับแต่ละฟังก์ชันและคลาสที่กำหนดไว้ในโมดูล พจนานุกรมที่ส่งคืนจะจับคู่ฟังก์ชันระดับโมดูลและชื่อคลาสกับตัวอธิบาย ออบเจ็กต์ที่ซ้อนกันจะถูกป้อนลงในพจนานุกรมย่อยของพาเรนต์

>>> x =pyclbr.readmodule_ex('socket')>>> สำหรับ k,v ใน x.items():print (k,v)IntEnum <วัตถุ pyclbr.Class ที่ 0x000002095D7D0048>IntFlag _intenum_converter _GiveupOnSendfile <วัตถุ pyclbr.Class ที่ 0x000002095D822898>ซ็อกเก็ต  83.2095D822898> ซ็อกเก็ต  83.0002095D822898> ซ็อกเก็ต  83.00202095D822898> จากฟังก์ชัน pyclbr.Class ที่ 0x000002095D822027BclD SocketIO getfqdn create_connection cld8344E0>create_connection clD8344E0>getbr.Function 

สามารถใช้ฟังก์ชันเหล่านี้ร่วมกับโมดูลที่กำหนดเองได้ รวมถึงการดึงข้อมูลไดเร็กทอรีของคลาสและเมธอดที่ผู้ใช้กำหนด

ในตัวอย่างต่อไปนี้ โมดูล 'triangles.py' ถูกใช้เพื่อให้ได้โครงสร้างคลาส

#triangles.pyimport mathclass Triangle:def __init__(self, a, b, c):self.a =a self.b =b self.c =c พื้นที่ def (ตัวเอง):s=(self.a+ self.b+self.c)/2 area=math.sqrt(s*(s-self.a)*(s-self.b)*(s-self.c)) คืนค่าพื้นที่คลาส EquiTriangle(Triangle):def __init__(ตัวเอง, a):b =a c =a super().__init__(a,b,c) def area(self):area=math.sqrt(3)*pow(self.a,2)/4 return พื้นที่

ตอนนี้เราจะได้คลาสและวิธีการในโมดูล 'สามเหลี่ยม'

>>> br =pyclbr.readmodule_ex('triangles')>>> สำหรับ i,j ใน br.items():พิมพ์ (i,j.methods)Triangle {'__init__':3, 'area':7}EquiTriangle {'__init__':12, 'area':16}

โมดูล pyclbr กำหนดสองอ็อบเจ็กต์ – คลาสอ็อบเจ็กต์และออบเจกต์ฟังก์ชัน

ฟังก์ชัน วัตถุมีคุณสมบัติดังต่อไปนี้

file
ชื่อของไฟล์ที่มีการกำหนดฟังก์ชัน
โมดูล
ชื่อของโมดูลที่กำหนดฟังก์ชันที่อธิบายไว้
ชื่อ
ชื่อของฟังก์ชัน
lineno
หมายเลขบรรทัดในไฟล์ที่คำจำกัดความเริ่มต้น
พาเรนต์
สำหรับฟังก์ชันระดับบนสุด ไม่มี สำหรับ Nestedfunctions พาเรนต์
เด็ก
ชื่อการแมปพจนานุกรมกับ descriptor ฟังก์ชันและคลาสที่ซ้อนกัน

ชั้นเรียน วัตถุมีคุณลักษณะเพิ่มเติมอีกสองประการนอกเหนือจากด้านบน

super
รายการของคลาสอ็อบเจ็กต์ที่อธิบายคลาสพื้นฐานของคลาสที่กำลังอธิบาย
วิธีการ
ชื่อวิธีการจับคู่พจนานุกรมกับหมายเลขบรรทัด