簡體   English   中英

我可以在本地類中使用導入模塊中的函數嗎? (蟒蛇)

[英]Can I use a function from an import module inside a local class? (Python)

我想實現如下所示的代碼,但出現“未定義全局名稱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():
        action = raw_input()
        if action = 'fow':
            import import_module
            import_module.import_function
        else:
            print 'null'

是。 但是您必須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的有效模塊

您需要將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'
>>> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM