मैं अन्य उत्तर से विचारों में से कुछ को लेकर उन्हें एक अजगर डेकोरेटर में बदल गया @modulize
जो एक फ़ंक्शन को मॉड्यूल में परिवर्तित करता है। इस मॉड्यूल को सामान्य रूप से आयात किया जा सकता है। यहाँ एक उदाहरण है।
@modulize('my_module')
def my_dummy_function(__name__): # the function takes one parameter __name__
# put module code here
def my_function(s):
print(s, 'bar')
# the function must return locals()
return locals()
# import the module as usual
from my_module import my_function
my_function('foo') # foo bar
डेकोरेटर के लिए कोड के रूप में इस प्रकार है
import sys
from types import ModuleType
class MockModule(ModuleType):
def __init__(self, module_name, module_doc=None):
ModuleType.__init__(self, module_name, module_doc)
if '.' in module_name:
package, module = module_name.rsplit('.', 1)
get_mock_module(package).__path__ = []
setattr(get_mock_module(package), module, self)
def _initialize_(self, module_code):
self.__dict__.update(module_code(self.__name__))
self.__doc__ = module_code.__doc__
def get_mock_module(module_name):
if module_name not in sys.modules:
sys.modules[module_name] = MockModule(module_name)
return sys.modules[module_name]
def modulize(module_name, dependencies=[]):
for d in dependencies: get_mock_module(d)
return get_mock_module(module_name)._initialize_
परियोजना here on GitHub पाया जा सकता है है। विशेष रूप से, मैंने इसे प्रोग्रामिंग प्रतियोगिताओं के लिए बनाया है जो केवल प्रतियोगी को एक .py
फ़ाइल सबमिट करने की अनुमति देता है। यह एक को कई .py फ़ाइलों के साथ एक परियोजना विकसित करने की अनुमति देता है और फिर अंत में उन्हें एक .py
फ़ाइल में जोड़ता है।
स्रोत
2017-07-31 16:53:26
जो शब्द आप खोज रहे हैं वह ___mock___ है। यह प्रश्न मदद कर सकता है, http://stackoverflow.com/questions/295438 –