2014-01-10 29 views
1

我想实现下面的代码,但我得到了'全局名称import_module未定义'错误。是否可以在本地类中使用导入模块中的函数?如果可能的话,它是如何完成的?我可以使用本地类内导入模块的功能吗? (Python)


class local_class(): 
    def local_function(): 
     action = raw_input() 
     if action = 'fow': 
      import_module.import_function 
     else: 
      print 'null' 
+3

是的,但您需要实际导入它。这是你的实际代码吗? – That1Guy

+1

我注意到你还没有接受任何答案。如果答案解决了你的问题,你应该[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work),给你和答案者一些声望。 – sloth

回答

1

是的,这是完全可能的,但你需要导入模块。

class local_class(): 
    def local_function(): 
     action = raw_input() 
     if action = 'fow': 
      import import_module 
      import_module.import_function 
     else: 
      print 'null' 
+0

我想你现在缺少'import'。 – jedwards

+1

@jedwards是的,谢谢。我编辑了我的答案。 – That1Guy

+0

也移动方法内的导入:)我认为OP也想要这个! –

0

是的。但是,你必须import模块:

class local_class(): 
    def local_function(): 
     action = raw_input() 
     if action = 'fow': 
      import import_module 
      import_module.import_function 
     else: 
      print 'null' 

假设import_module.pysys.path

0

有效的模块,您需要在一些地方把你的import语句中所需要的范围:

import import_module 
class local_class(): 
    def local_function(): 
     action = raw_input() 
     if action = 'fow': 
      import_module.import_function 
     else: 
      print 'null' 

class local_class(): 
    def local_function(): 
     import import_module 
     action = raw_input() 
     if action = 'fow': 
      import_module.import_function 
     else: 
      print 'null' 
# import_module.import_function would fail here, import_module is local 
# to local_class.local_function 
# BUT... 

但要小心,一旦导入,模块将被python内部存储,这样即使你不能在另一个范围内访问它,如果你再次导入模块,你将得到相同的实例。例如:

>>> def func(): 
    import shutil 
    # Store a new attribute in the module object 
    shutil.test = 5 
    print(shutil.test) 


>>> func() 
5 
>>> shutil.test 
Traceback (most recent call last): 
    File "<pyshell#45>", line 1, in <module> 
    shutil.test 
NameError: name 'shutil' is not defined 
>>> import shutil 
>>> shutil.test # The attribute exists because we get the same module object 
5 
>>> 
>>> ================================ RESTART ================================ 
>>> shutil.test 
Traceback (most recent call last): 
    File "<pyshell#48>", line 1, in <module> 
    shutil.test 
NameError: name 'shutil' is not defined 
>>> import shutil 
>>> shutil.test 
Traceback (most recent call last): 
    File "<pyshell#50>", line 1, in <module> 
    shutil.test 
AttributeError: 'module' object has no attribute 'test' 
>>> 
相关问题