मैं गतिशील वर्ग पीढ़ी कर रहा हूं कि "संकलित" समय पर स्थिर रूप से निर्धारित किया जा सकता है। सरल मामले है कि मैं अभी और अधिक या कम इस तरह दिखता है:पाइथन क्लास पीढ़ी के स्थायी कैशिंग परिणाम
class Base(object):
def __init__(self, **kwargs):
self.do_something()
def ClassFactory(*args):
some_pre_processing()
class GenericChild(Base):
def __init__(self, **kwargs):
self.some_processing()
super(GenericChild, self).__init__(*args, **kwargs)
return GenericChild
Child1 = ClassFactory(1, 'Child_setting_value1')
Child2 = ClassFactory(2, 'Child_setting_value2')
Child3 = ClassFactory(3, 'Child_setting_value3')
आयात पर, पायथन दुभाषिया, बाईटकोड को संकलित करने के लिए तो अमल फ़ाइल (इस प्रकार पैदा Child1
, Child2
, और Child3
) प्रति एक बार लगता है पायथन उदाहरण।
वहाँ एक रास्ता, अजगर बताने के लिए फ़ाइल को संकलित करने के एक बार यह अमल Child
कक्षाएं खोल, तो संकलन कि pyc
फ़ाइल में है, ताकि खोल केवल (यहां तक कि अजगर स्क्रिप्ट के लगातार फांसी भर में एक बार होता है है)?
मेरे पास अन्य उपयोग के मामले हैं जो अधिक जटिल और विस्तृत हैं, इसलिए Child
कक्षाओं को हाथ से लिखकर कारखाने से छुटकारा पाने के लिए वास्तव में एक विकल्प नहीं है। इसके अलावा, यदि संभव हो तो मैं अतिरिक्त प्रीप्रोसेसर चरण से बचना चाहता हूं (सी प्रीप्रोसेसर के साथ सी-स्टाइल मैक्रोज़ का उपयोग करना)।
यह प्रति वर्ग की लागत नहीं लेता है, लेकिन मेरे पास ऐसे कई मामले हैं और अक्सर कई पाइथन उदाहरणों को विकसित करने की आवश्यकता है, इसलिए यह विशेष रूप से उच्च भार के तहत बढ़ता है (जिस स्थिति में प्रारंभिकता का थोक हो सकता है एक लघु चलने कार्यक्रम के लिए समय)। पाइथन कोड उत्पन्न करते समय एक टेम्पलेटिंग एंजिंग का उपयोग करने के लिए – CSTobey
+1। – thebjorn