मुझे उस विधि को ओवरराइड करने में समस्या है जहां से ... आयात कथन का उपयोग किया जाता है।मॉड्यूल विधि को ओवरराइड करें जहां से ... आयात का उपयोग किया जाता है
# a.py module
def print_message(msg):
print(msg)
# b.py module
from a import print_message
def execute():
print_message("Hello")
# c.py module which will be executed
import b
b.execute()
मैं एक या बी मॉड्यूल में कोड बदले बिना print_message (एमएसजी) विधि ओवरराइड करने के लिए करना चाहते हैं: कुछ उदाहरण समस्या को वर्णन करने। मैंने कई तरीकों से कोशिश की लेकिन आयात ... आयात आयात मूल विधि। जब मैंने कोड बदल दिया तो
import a
a.print_message
मेरे परिवर्तन को देखने के बजाय।
क्या आप इस समस्या को हल करने का सुझाव दे सकते हैं?
किसी भी छोटे उदाहरण के लिए अग्रिम धन्यवाद।
बेस्ट सादर
------------------ अद्यतन ------------------
मैं ऐसा करने की कोशिश की गई जैसे कि:
# c.py module
import b
import a
import sys
def new_print_message(msg):
print("New content")
module = sys.modules["a"]
module.print_message = new_print_message
sys.module["a"] = module
लेकिन यह काम नहीं कर रहा है जहां मैं उपयोग कर रहा हूं ... आयात विवरण। केवल आयात के लिए काम कर रहा है लेकिन जैसा कि मैंने लिखा है, मैं b.py और a.py मॉड्यूल में परिवर्तन कोड नहीं चाहता हूं।
(1) "ओवरराइड" से आपका क्या मतलब है? बंदर पैच? (2) आपके द्वारा पेश किए गए कोड में, केवल एक 'print_message() 'है। – NPE
मैं मुद्रित करने के लिए print_message() विधि को बदलना चाहता हूं उदा। "नई सामग्री" संदेश। A.py और b.py में बदलाव किए बिना c.py फ़ाइल से इसे कैसे प्राप्त करें? "बंदर पैच" के स्पष्टीकरण और प्रदर्शन के लिए – Pawel
: http://stackoverflow.com/a/6647776/1498405 – hardmooth