Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python क्लास ब्राउज़र समर्थन


Python लाइब्रेरी में pyclbr मॉड्यूल Python मॉड्यूल में परिभाषित फ़ंक्शन, क्लास, और मेथड के बारे में जानकारी निकालता है। जानकारी Python स्रोत कोड से निकाली जाती है न कि मॉड्यूल को आयात करके।

यह मॉड्यूल readmodule() फ़ंक्शन को परिभाषित करता है जो मॉड्यूल-स्तरीय क्लास नामों को क्लास डिस्क्रिप्टर से मैप करने वाला डिक्शनरी लौटाता है। फ़ंक्शन एक मॉड्यूल नाम को पैरामीटर के रूप में लेता है। यह एक पैकेज के भीतर एक मॉड्यूल का नाम हो सकता है। उस स्थिति में पथ डायरेक्टरी पथ का एक क्रम है जिसे sys.path में प्रीपेंड किया जाता है, जिसका उपयोग मॉड्यूल स्रोत कोड का पता लगाने के लिए किया जाता है।

निम्नलिखित कोड Python लाइब्रेरी के socket मॉड्यूल में क्लास और मेथड को पार्स करने के लिए readmodule() फ़ंक्शन का उपयोग करता है।

import pyclbr
mod = pyclbr.readmodule("socket")

def show(c):
    s = "class " + c.name
    print(s + ":")
    methods = c.methods.items()
    for method, lineno in methods:
        print(" def " + method)
    print()

for k, v in 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__
    def __exit__
    def __repr__
    def __getstate__
    def dup
    def accept
    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_inheritable
class SocketIO:
    def __init__
    def readinto
    def write
    def readable
    def writable
    def seekable
    def fileno
    def name
    def mode
    def close

pyclbr मॉड्यूल readmodule_ex() फ़ंक्शन को भी परिभाषित करता है जो मॉड्यूल में परिभाषित प्रत्येक फ़ंक्शन और क्लास के लिए फ़ंक्शन या क्लास डिस्क्रिप्टर वाला डिक्शनरी लौटाता है। लौटाया गया डिक्शनरी मॉड्यूल-स्तरीय फ़ंक्शन और क्लास नामों को उनके डिस्क्रिप्टर से मैप करता है। नेस्टेड ऑब्जेक्ट को उनके पैरेंट के चिल्ड्रन डिक्शनरी में दर्ज किया जाता है।

>>> x = pyclbr.readmodule_ex('socket')
>>> for k, v in x.items(): print(k, v)
IntEnum 
IntFlag 
_intenum_converter 
_GiveupOnSendfile 
socket 
fromfd 
fromshare 
socketpair 
SocketIO 
getfqdn 
create_connection 
getaddrinfo 

इन फ़ंक्शन का उपयोग कस्टम मॉड्यूल के साथ भी किया जा सकता है ताकि उपयोगकर्ता-परिभाषित क्लास और मेथड की डायरेक्टरी प्राप्त की जा सके।

निम्नलिखित उदाहरण में एक मॉड्यूल 'triangles.py' का उपयोग इसकी क्लास संरचना प्राप्त करने के लिए किया जाता है।

# triangles.py
import math

class Triangle:
    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))
        return area

class EquiTriangle(Triangle):
    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 area

अब हम 'triangles' मॉड्यूल में क्लास और मेथड प्राप्त करेंगे।

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

pyclbr मॉड्यूल दो ऑब्जेक्ट परिभाषित करता है - क्लास ऑब्जेक्ट और फ़ंक्शन ऑब्जेक्ट।

फ़ंक्शन ऑब्जेक्ट में निम्नलिखित विशेषताएं हैं

file फ़ाइल का नाम जिसमें फ़ंक्शन परिभाषित है।
module फ़ंक्शन को परिभाषित करने वाले मॉड्यूल का नाम।
name फ़ंक्शन का नाम।
lineno फ़ाइल में वह लाइन नंबर जहां परिभाषा शुरू होती है।
parent टॉप-लेवल फ़ंक्शन के लिए, None। नेस्टेड फ़ंक्शन के लिए, पैरेंट।
children नेस्टेड फ़ंक्शन और क्लास के लिए नाम से डिस्क्रिप्टर मैप करने वाला डिक्शनरी।

क्लास ऑब्जेक्ट में उपरोक्त के अलावा दो और विशेषताएं हैं

super क्लास ऑब्जेक्ट की सूची जो वर्णित क्लास के तत्काल बेस क्लास का वर्णन करती है।
methods मेथड नामों को लाइन नंबरों से मैप करने वाला डिक्शनरी।

  1. पायथन में इनहेरिटेंस (Inheritance) पायथन में इनहेरिटेंस (Inheritance)

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में इनहेरिटेंस और क्लासेस को एक्सटेंड करने के बारे में जानेंगे।इनहेरिटेंस वास्तविक दुनिया के संबंधों को अच्छी तरह से दर्शाता है, पुन: प्रयोज्यता प्रदान करता है और ट्रांजिटिविटी का समर्थन करता है। यह तेज़ विकास समय, आसान रखरखाव और विस्तार में आसानी प्र

  1. - Python में फर्स्ट-क्लास फ़ंक्शन्स

    विभिन्न प्रोग्रामिंग भाषाओं में, फर्स्ट-क्लास ऑब्जेक्ट्स वे ऑब्जेक्ट्स होते हैं जिन्हें यूनिफॉर्मली हैंडल किया जा सकता है। फर्स्ट-क्लास ऑब्जेक्ट्स को डेटा स्ट्रक्चर्स के रूप में स्टोर किया जा सकता है, कुछ अन्य फ़ंक्शन्स के पैरामीटर्स के रूप में, कंट्रोल स्ट्रक्चर्स के रूप में आदि। हम कह सकते हैं कि

  1. - पायथन एक्सेप्शन बेस क्लासेस

    अन्य हाई-लेवल लैंग्वेजेज की तरह, पायथन में भी एक्सेप्शन्स होते हैं। जब कोई समस्या होती है, तो यह एक एक्सेप्शन उठाता है। ZeroDivisionError, AssertionError आदि जैसे विभिन्न प्रकार के एक्सेप्शन्स होते हैं। सभी एक्सेप्शन क्लासेस BaseException क्लास से डिराइव्ड होती हैं।कोड बिल्ट-इन एक्सेप्शन्स चला सकता