पाइथन जैसी गतिशील भाषा में संभव नहीं है, लेकिन क्या हमें वास्तव में सब कुछ दुरुपयोग करने की आवश्यकता है? वैसे भी, यहाँ यह है:
from types import ModuleType
import sys
class JVM(ModuleType):
Foo = 3
sys.modules['JVM'] = JVM
from JVM import Foo
print Foo
लेकिन एक पैटर्न मैं कई पुस्तकालयों/परियोजनाओं में देखा है एक _make_module()
समारोह है, जो गतिशील रूप से एक ModuleType
बनाता है और उसमें जो कुछ initializes किसी तरह का है। उसके बाद, वर्तमान मॉड्यूल को नए मॉड्यूल द्वारा प्रतिस्थापित किया जाता है (sys.modules
पर असाइनमेंट का उपयोग करके) और _make_module()
फ़ंक्शन हटा दिया जाता है। इसका लाभ यह है कि आप मॉड्यूल पर लूप कर सकते हैं और उस लूप के अंदर मॉड्यूल में ऑब्जेक्ट्स भी जोड़ सकते हैं, जो कभी-कभी काफी उपयोगी होता है (लेकिन सावधानी के साथ इसका उपयोग करें!)।
क्यों? क्या आप कभी ऐसा करेंगे? –
@ एसएलट अनिवार्य रूप से, मैं रिमोट जेवीएम (पाइथन प्रोग्राम में) से पैकेज और कक्षाएं आयात करना चाहता हूं और हालांकि मैं एक आयात विधि प्रदान कर सकता हूं, मैं पाइथन सिंटैक्स का पुन: उपयोग करना चाहता हूं। – Barthelemy
"रिमोट जेवीएम से आयात पैकेज और कक्षाएं"? फाइल नहीं है? यह कैसे काम करने जा रहा है? आप .pyc फ़ाइलों के निर्माण का प्रबंधन कैसे करेंगे? "फाइल" के साथ क्या गलत है? वे वास्तव में अच्छी तरह से काम करते हैं। फ़ाइल सिस्टम को रिमोट करने के साथ क्या गलत है? यह वास्तव में अच्छी तरह से काम करता है। –