"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन में टाइप हिंटिंग के लिए चक्रीय आयात का समाधान कैसे करें?

पायथन में टाइप हिंटिंग के लिए चक्रीय आयात का समाधान कैसे करें?

2024-11-17 को प्रकाशित
ब्राउज़ करें:966

How to Resolve Cyclic Imports for Type Hinting in Python?

चक्रीय आयात के बिना पायथन में संकेत टाइप करें

एक बड़े वर्ग को दो छोटे वर्गों में विभाजित करने के प्रयास में, आपको चक्रीय की समस्या का सामना करना पड़ता है आयात. "मुख्य" वर्ग मिक्सिन वर्ग को आयात करता है, और मिक्सिन वर्ग अपने प्रकार के संकेत में "मुख्य" वर्ग को संदर्भित करता है। इसके परिणामस्वरूप एक आयात चक्र उत्पन्न होता है, जो प्रकार संकेत को ठीक से काम करने से रोकता है।

इसे हल करने के लिए, आप निम्नलिखित दृष्टिकोण पर विचार कर सकते हैं:

# main.py
from __future__ import annotations
from typing import TYPE_CHECKING, Any

if TYPE_CHECKING:
    from mixin import MyMixin

class Main(object):
    def func1(self, xxx: Any):
        ...
# mixin.py
from __future__ import annotations
from typing import TYPE_CHECKING, Any

if TYPE_CHECKING:
    from main import Main

class MyMixin(object):
    def func2(self: Main, xxx: Any):
        ...

इस उदाहरण में, पायथन के TYPE_CHECKING स्थिरांक का उपयोग "मुख्य" वर्ग को सशर्त रूप से आयात करने के लिए किया जाता है। कोड चलाते समय, स्थिरांक गलत होने के कारण आयात विवरण छोड़ दिया जाता है। हालाँकि, mypy जैसे टाइप-चेकिंग टूल if TYPE_CHECKING ब्लॉक के भीतर कोड की व्याख्या करते हैं और func2 के लिए टाइप एनोटेशन को पहचानते हैं।

एक अन्य दृष्टिकोण में फॉरवर्ड रेफरेंस का उपयोग करना शामिल है:

# mixin.py
from __future__ import annotations
from typing import TYPE_CHECKING, Any

if TYPE_CHECKING:
    from main import Main

class MyMixin(object):
    def func2(self, xxx: 'Main'):
        ...

यहां, func2 के लिए टाइप एनोटेशन एक स्ट्रिंग है जो उस वर्ग के नाम का प्रतिनिधित्व करता है जिसे बाद में आयात किया जाएगा। दोनों दृष्टिकोणों को टाइप संकेतों के साथ प्रभावी ढंग से काम करने के लिए पायथन 3.7 या उच्चतर के उपयोग की आवश्यकता होती है।

याद रखें कि मिक्सिन और टाइप हिंटिंग का उपयोग करने के लिए आपके कोड में अतिरिक्त संरचना की आवश्यकता हो सकती है। उदाहरण के लिए, mypy एक सार बेस क्लास (एबीसी) बनाने की अनुशंसा करता है जो आपके "मुख्य" और मिक्सिन दोनों वर्गों को विरासत में मिलता है। इससे टाइप चेकिंग की सटीकता में सुधार हो सकता है।

विज्ञप्ति वक्तव्य यह लेख यहां पुनर्मुद्रित है: 1729656617 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3