Given I have files
testone.py
if __name__ == "__main__":
from testtwo import Fu
class Foo:
def bar(self):
print 'barrr'
testtwo.py
class Fu:
def baz(self):
print 'baz'
Fu().baz() # function call within module
How do you import class Fu from file testtwo.py without running the function called within module testtwo.py? I tried resolving the issue checking the name. As is running the file testone.py will result in the shell printing out baz.
-
by definition i guess this is a repost. of this question stackoverflow.com/questions/6757192/…Dap– Dap2014年10月15日 21:41:01 +00:00Commented Oct 15, 2014 at 21:41
-
1you can't supress it - python modules are defined that way (i.e. they execute when imported). If you don't like that feature change your design !Tony Suffolk 66– Tony Suffolk 662014年10月15日 21:42:40 +00:00Commented Oct 15, 2014 at 21:42
-
1It may have the same answer, but semantically, it's a different question.Aaron Hall– Aaron Hall ♦2014年10月15日 21:58:13 +00:00Commented Oct 15, 2014 at 21:58
-
@AaronHall why I said by definition. Thanks for seeing my pointDap– Dap2014年10月15日 22:01:39 +00:00Commented Oct 15, 2014 at 22:01
1 Answer 1
How to prevent modules code execution from module in python?
You can't, when you import a module, it runs everything that is called in the global scope.
You can change it so that it's easy to call or not:
def main():
Fu().baz()
if __name__ == '__main__':
main()
And then when you want it called you import it and call main() and it will still automatically run when you run it as the main module.