Python 3.7 - types

प्रकार - गतिशील प्रकार का निर्माण और निर्मित प्रकारों के नाम




python

प्रकार - गतिशील प्रकार का निर्माण और निर्मित प्रकारों के नाम

स्रोत कोड: Lib/types.py

यह मॉड्यूल नए प्रकार के गतिशील निर्माण में सहायता करने के लिए उपयोगिता फ़ंक्शन को परिभाषित करता है।

यह कुछ ऑब्जेक्ट प्रकारों के नामों को भी परिभाषित करता है जो मानक पायथन दुभाषिया द्वारा उपयोग किए जाते हैं, लेकिन इंटि या स्ट्रैट जैसे बिल्डरों के रूप में उजागर नहीं होते हैं।

अंत में, यह कुछ अतिरिक्त प्रकार से संबंधित उपयोगिता वर्ग और फ़ंक्शंस प्रदान करता है जो मौलिक रूप से पर्याप्त नहीं हैं।

गतिशील प्रकार निर्माण

types.new_class(name, bases=(), kwds=None, exec_body=None)

उपयुक्त मेटाक्लस का उपयोग करके गतिशील रूप से एक क्लास ऑब्जेक्ट बनाता है।

पहले तीन तर्क ऐसे घटक हैं जो एक क्लास डेफिनेशन हैडर बनाते हैं: क्लास का नाम, बेस क्लासेस (क्रम में), कीवर्ड तर्क (जैसे metaclass )।

निष्पादित_बॉडी तर्क एक कॉलबैक है जिसका उपयोग हौसले से निर्मित वर्ग के नाम स्थान को आबाद करने के लिए किया जाता है। इसे क्लास नेमस्पेस को अपने एकमात्र तर्क के रूप में स्वीकार करना चाहिए और सीधे क्लास कंटेंट के साथ नेमस्पेस अपडेट करना चाहिए। यदि कोई कॉलबैक प्रदान नहीं किया जाता है, तो इसका प्रभाव lambda ns: ns में पास होने के समान है।

संस्करण 3.3 में नया।

types.prepare_class(name, bases=(), kwds=None)

उपयुक्त मेटाक्लस की गणना करता है और क्लास नेमस्पेस बनाता है।

तर्क वे घटक हैं जो वर्ग परिभाषा शीर्षक बनाते हैं: वर्ग का नाम, आधार वर्ग (क्रम में) और खोजशब्द तर्क (जैसे metaclass )।

रिटर्न वैल्यू 3-ट्यूपल है: metaclass, namespace, kwds

मेटाक्लास उपयुक्त मेटाक्लस है, नेमस्पेस तैयार क्लास नेमस्पेस है और kwds किसी भी 'metaclass' मेटाक्लस 'metaclass' प्रविष्टि को हटाने के साथ kwds तर्क में पारित की एक अद्यतन प्रति है। यदि कोई kwds तर्क पारित नहीं किया जाता है, तो यह एक खाली तानाशाही होगी।

संस्करण 3.3 में नया।

संस्करण 3.6 में परिवर्तित: लौटे हुए टपल के namespace तत्व के लिए डिफ़ॉल्ट मान बदल गया है। अब एक सम्मिलन-आदेश-संरक्षण मानचित्रण का उपयोग किया जाता है जब __prepare__ विधि नहीं होती है।

यह भी देखें

Metaclasses
इन कार्यों द्वारा समर्थित वर्ग निर्माण प्रक्रिया का पूरा विवरण
पीईपी 3115 - पायथन 3000 में मेटाक्लासेस
__prepare__ नेमस्पेस हुक का परिचय दिया
types.resolve_bases(bases)

PEP 560 द्वारा निर्दिष्ट MRO प्रविष्टियों को गतिशील रूप से हल करें।

यह फ़ंक्शन उन ठिकानों की वस्तुओं की तलाश करता है जो type उदाहरण नहीं हैं, और एक टपल लौटाता है जहां प्रत्येक ऐसी वस्तु जिसमें __mro_entries__ विधि होती है, इस पद्धति को कॉल करने के अनपेक्षित परिणाम के साथ बदल दी जाती है। यदि कोई आधार आइटम type का एक उदाहरण है, या इसमें __mro_entries__ विधि नहीं है, तो यह अपरिवर्तित रिटर्न टपल में शामिल है।

संस्करण 3.7 में नया।

यह भी देखें

PEP 560 - टाइपिंग मॉड्यूल और जेनेरिक प्रकारों के लिए कोर समर्थन

मानक दुभाषिया प्रकार

यह मॉड्यूल उन कई प्रकारों के लिए नाम प्रदान करता है, जिन्हें पायथन इंटरप्रेटर को लागू करने की आवश्यकता होती है। यह जानबूझकर कुछ ऐसे प्रकारों से बचता है, जो केवल संयोग के दौरान उत्पन्न होते हैं जैसे कि listiterator प्रकार।

इन नामों का विशिष्ट उपयोग isinstance() या issubclass() चेक के लिए है।

मानक नाम निम्नलिखित प्रकारों के लिए परिभाषित किए गए हैं:

types.FunctionType
types.LambdaType

lambda एक्सप्रेशन द्वारा बनाए गए उपयोगकर्ता-परिभाषित फ़ंक्शन और फ़ंक्शन का प्रकार।

types.GeneratorType

जनरेटर कार्यों द्वारा निर्मित generator प्रकार की वस्तुएं।

types.CoroutineType

coroutine ऑब्जेक्ट्स का प्रकार, coroutine फ़ंक्शन द्वारा बनाया गया है।

संस्करण 3.5 में नया।

types.AsyncGeneratorType

अतुल्यकालिक जनरेटर कार्यों के प्रकार, अतुल्यकालिक जनरेटर कार्यों से निर्मित।

संस्करण 3.6 में नया।

types.CodeType

कोड ऑब्जेक्ट्स का प्रकार जैसे कि compile() द्वारा लौटाया गया compile()

types.MethodType

उपयोगकर्ता-परिभाषित वर्ग उदाहरणों के तरीकों का प्रकार।

types.BuiltinFunctionType
types.BuiltinMethodType

अंतर्निहित कार्यों का प्रकार जैसे len() या sys.exit() , और अंतर्निहित कक्षाओं के तरीके। (यहां, "अंतर्निहित" का अर्थ "सी में लिखा गया" है)

types.WrapperDescriptorType

कुछ अंतर्निहित डेटा प्रकारों और आधार वर्गों के प्रकार जैसे कि object.__init__() या object.__lt__()

संस्करण 3.7 में नया।

types.MethodWrapperType

कुछ अंतर्निहित डेटा प्रकारों और आधार वर्गों के बाध्य तरीकों का प्रकार। उदाहरण के लिए यह object().__str__ का प्रकार object().__str__

संस्करण 3.7 में नया।

types.MethodDescriptorType

कुछ अंतर्निहित डेटा प्रकारों के तरीके जैसे str.join()

संस्करण 3.7 में नया।

types.ClassMethodDescriptorType

कुछ अंतर्निहित डेटा प्रकारों की अनबाउंड श्रेणी के तरीके जैसे कि dict.__dict__['fromkeys']

संस्करण 3.7 में नया।

class types.ModuleType(name, doc=None)

modules प्रकार। कंस्ट्रक्टर मॉड्यूल का नाम लेता है और वैकल्पिक रूप से इसका docstring बनाया जाता है।

ध्यान दें

यदि आप विभिन्न आयात-नियंत्रित विशेषताओं को सेट करना चाहते हैं, तो एक नया मॉड्यूल बनाने के लिए importlib.util.module_from_spec() का उपयोग करें।

__doc__

मॉड्यूल का docstring । किसी के लिए चूक।

__loader__

loader जिसने मॉड्यूल लोड किया। किसी के लिए चूक।

संस्करण ४.४ में परिवर्तित: None करने के लिए चूक। पहले यह विशेषता वैकल्पिक थी।

__name__

मॉड्यूल का नाम।

__package__

मॉड्यूल किस package संबंधित है। यदि मॉड्यूल शीर्ष-स्तर है (अर्थात किसी विशिष्ट पैकेज का हिस्सा नहीं है) तो विशेषता को '' सेट किया जाना चाहिए, अन्यथा इसे पैकेज के नाम पर सेट किया जाना चाहिए (जो __name__ हो सकता है यदि मॉड्यूल एक पैकेज है )। किसी के लिए चूक।

संस्करण ४.४ में परिवर्तित: None करने के लिए चूक। पहले यह विशेषता वैकल्पिक थी।

class types.TracebackType(tb_next, tb_frame, tb_lasti, tb_lineno)

ट्रेसबैक ऑब्जेक्ट का प्रकार जैसे कि sys.exc_info()[2] में पाया गया।

उपलब्ध विशेषताओं और परिचालनों के विवरण के लिए भाषा संदर्भ देखें, और गतिशील रूप से ट्रेसबैक बनाने पर मार्गदर्शन करें।

types.FrameType

यदि tb एक ट्रेसबैक ऑब्जेक्ट है, तो फ़्रेम ऑब्जेक्ट्स के प्रकार जैसे tb.tb_frame में पाए जाते हैं।

उपलब्ध विशेषताओं और परिचालनों के विवरण के लिए भाषा संदर्भ देखें।

types.GetSetDescriptorType

PyGetSetDef साथ एक्सटेंशन मॉड्यूल में परिभाषित ऑब्जेक्ट्स का प्रकार, जैसे कि FrameType.f_locals या array.array.typecode । इस प्रकार का उपयोग ऑब्जेक्ट विशेषताओं के लिए डिस्क्रिप्टर के रूप में किया जाता है; यह property प्रकार के समान उद्देश्य है, लेकिन विस्तार मॉड्यूल में परिभाषित वर्गों के लिए।

types.MemberDescriptorType

PyMemberDef साथ एक्सटेंशन मॉड्यूल में परिभाषित ऑब्जेक्ट्स का प्रकार, जैसे कि datetime.timedelta.days । इस प्रकार का उपयोग साधारण सी डेटा सदस्यों के लिए डिस्क्रिप्टर के रूप में किया जाता है जो मानक रूपांतरण कार्यों का उपयोग करते हैं; यह property प्रकार के समान उद्देश्य है, लेकिन विस्तार मॉड्यूल में परिभाषित वर्गों के लिए।

CPython कार्यान्वयन विवरण: Python के अन्य कार्यान्वयन में, यह प्रकार GetSetDescriptorType समान हो सकता है।

class types.MappingProxyType(mapping)

केवल-एक मैपिंग का प्रॉक्सी। यह मैपिंग की प्रविष्टियों पर एक गतिशील दृश्य प्रदान करता है, जिसका अर्थ है कि जब मैपिंग बदलता है, तो दृश्य इन परिवर्तनों को दर्शाता है।

संस्करण 3.3 में नया।

key in proxy

True वापसी करें यदि अंतर्निहित मैपिंग में एक महत्वपूर्ण कुंजी है , अन्यथा False

proxy[key]

कुंजी कुंजी के साथ अंतर्निहित मैपिंग का आइटम लौटाएं। यदि कोई कुंजी अंतर्निहित मैपिंग में नहीं है, तो KeyError उठाता है।

iter(proxy)

अंतर्निहित मैपिंग की कुंजी पर एक पुनरावृत्त लौटें। यह iter(proxy.keys()) लिए एक शॉर्टकट है।

len(proxy)

अंतर्निहित मैपिंग में आइटम की संख्या लौटाएं।

copy()

अंतर्निहित मानचित्रण की उथली प्रतिलिपि लौटाएं।

get(key[, default])

कुंजी के लिए मान वापस करें यदि कुंजी अंतर्निहित मानचित्रण में है, तो डिफ़ॉल्ट । यदि डिफ़ॉल्ट नहीं दिया जाता है, तो यह किसी को None KeyError , ताकि यह विधि कभी भी KeyError न उठाए।

items()

अंतर्निहित मैपिंग के आइटम ( (key, value) जोड़े) का एक नया दृश्य लौटाएं।

keys()

अंतर्निहित मैपिंग की कुंजियों का एक नया दृश्य लौटाएं।

values()

अंतर्निहित मैपिंग के मूल्यों का एक नया दृश्य लौटाएं।

अतिरिक्त उपयोगिता वर्ग और कार्य

class types.SimpleNamespace

एक साधारण object उपवर्ग जो अपने नेमस्पेस को विशेषता प्रदान करता है, साथ ही साथ एक सार्थक रीप्र भी।

object विपरीत, SimpleNamespace साथ आप विशेषताओं को जोड़ और हटा सकते हैं। यदि एक SimpleNamespace ऑब्जेक्ट को कीवर्ड तर्क से आरंभ किया जाता है, तो उन्हें सीधे अंतर्निहित नामस्थान में जोड़ दिया जाता है।

प्रकार लगभग निम्नलिखित कोड के बराबर है:

class SimpleNamespace:
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)

    def __repr__(self):
        keys = sorted(self.__dict__)
        items = ("{}={!r}".format(k, self.__dict__[k]) for k in keys)
        return "{}({})".format(type(self).__name__, ", ".join(items))

    def __eq__(self, other):
        return self.__dict__ == other.__dict__

SimpleNamespace class NS: pass बदले प्रतिस्थापन के लिए उपयोगी हो सकता है class NS: pass । हालांकि, एक संरचित रिकॉर्ड प्रकार के लिए इसके बजाय namedtuple() उपयोग करें।

संस्करण 3.3 में नया।

types.DynamicClassAttribute(fget=None, fset=None, fdel=None, doc=None)

__Getattr__ के लिए एक वर्ग पर रूट विशेषता पहुंच।

यह एक डिस्क्रिप्टर है, जिसका उपयोग उन विशेषताओं को परिभाषित करने के लिए किया जाता है जो एक उदाहरण के माध्यम से और एक कक्षा के माध्यम से एक्सेस करने पर अलग-अलग कार्य करते हैं। इंस्टेंस एक्सेस सामान्य रहता है, लेकिन एक क्लास के माध्यम से एक विशेषता तक पहुंच को क्लास की __getattr__ विधि में रूट किया जाएगा; यह AttrourError बढ़ाकर किया जाता है।

यह एक उदाहरण पर गुणों को सक्रिय करने की अनुमति देता है, और एक ही नाम के साथ वर्ग पर आभासी विशेषताएँ हैं (उदाहरण के लिए Enum देखें)।

संस्करण 3.4 में नया।

Coroutine उपयोगिता कार्य

types.coroutine(gen_func)

यह फ़ंक्शन एक generator फ़ंक्शन को एक कोरआउट फ़ंक्शन में बदल देता है जो जनरेटर-आधारित कोरआउट करता है। जनरेटर-आधारित कोराउटीन अभी भी एक जनरेटर पुनरावृत्ति है , लेकिन इसे coroutine ऑब्जेक्ट भी माना जाता है और यह awaitable । हालाँकि, यह आवश्यक रूप से __await__() विधि को लागू नहीं कर सकता है।

यदि gen_func एक जनरेटर फ़ंक्शन है, तो इसे इन-प्लेस संशोधित किया जाएगा।

यदि gen_func कोई जनरेटर फ़ंक्शन नहीं है, तो इसे लपेटा जाएगा। यदि यह collections.abc.Generator का एक उदाहरण देता है, तो उदाहरण एक प्रतीक्षित प्रॉक्सी ऑब्जेक्ट में लपेटा जाएगा। अन्य सभी प्रकार की वस्तुओं को वापस कर दिया जाएगा।

संस्करण 3.5 में नया।