İçe aktarma yönteminin kullanıldığı ... geçersiz kılma yönteminde sorun yaşıyorum. Bir veya b modülünde kodu değiştirmeden print_message (MSG) yöntemini geçersiz istiyorumİçe aktarma modülü yöntemi nerede ... içe aktarma kullanılıyor
# 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()
: Bazı örnek sorunu göstermek için. Birçok yönden denedim ama ... ithalatı ithal eden orijinal yöntem. Kodu değiştirdiğimde benden değiştirdiğimden
.
Bu sorunu nasıl çözeceğimi önerir misiniz?
Küçük bir örnek için şimdiden teşekkür ederiz.
Saygılarımızla
------------------ Güncelleme ------------------
ben Bunu aşağıdaki gibi yapmayı denedim:
# 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
Fakat bu benim için kullandığım yerde çalışmıyor ... import statement. Sadece ithalat için çalışıyor ama yazdığım gibi b.py ve a.py modüllerinde kod değiştirmek istemiyorum. Size dokunulmamış a
ve b
modülleriyle
(1) Tam olarak "geçersiz kılma" ile ne demek istiyorsunuz? Maymun yama? (2) Sunduğunuz kodda, sadece bir tane 'print_message()' vardır. – NPE
Yazdırmak için print_message() yöntemini değiştirmek istiyorum. "Yeni içerik" mesajı. A.py ve b.py'de değişiklik olmadan c.py dosyasından nasıl edinilir? Açıklama "maymun yama" açıklaması ve açıklaması için – Pawel
: http://stackoverflow.com/a/6647776/1498405 – hardmooth