[EMAIL PROTECTED] wrote: > Suppose I have this module `mymodule.py' - > > # mymodule.py - begin > def test(): > print "original" > # mymodule.py - end > > Now assume that I do this in some arbitrary module -> > > def override(): > print "test is overridden" > > import mymodule > mymodule.test = override > > Two questions - > > 1) If mymodule is subsequently imported, will my `override' function be > used, or will python magically `fix' (or break depending on your > perspective) mymodule and use the original mymodule.test function? > > 2) Once I assign mymodule.test with override, will modules that > imported my module *PRIOR* to the assignment get override, or will they > keep the original function test()? > > I hope that makes sense. > > Thanks! > jw
iirc, python only imports modules once, so for future imports should be ok with the override. There is a reload() function that wipes and reloads a module(though not, I believe, recursively, that is, not modules that it imported) I've done someting similar to your overwriting in the past, anyway, and it worked. However, you should find this easy to test yourself, in case the revision makes a difference. How i'd test it: file: original def afunction(): print 'Hi' file: changer import original def otherFunc(): print "Bye" original.afunction()=otherFunc file: final1 import original original.afunction() ##should say hi import changer original.afunction() ##should say bye changer.original.afunction() ##should still say bye. file: final2 import changer changer.original.afunction() ##should say bye import original changer.original.afunction() ##should say bye original.afunction() ##should say bye cmd prompt: python final1.py Expect: Hi Bye Bye python final2.py Expect: Bye Bye Bye -- http://mail.python.org/mailman/listinfo/python-list