2013-07-31 71 views
6

我有一個類,我想通過做導入高清功能:的Python:導入另一.py文件

import <file> 

,但是當我嘗試調用它,它說,DEF無法找到。我也試過:

from <file> import <def> 

但它說全局名稱'x'沒有定義。

那麼我該如何做到這一點?

編輯:

這是我正在嘗試做的一個例子。在file1.py我:

var = "hi" 

class a: 
    def __init__(self): 
    self.b() 

    import file2 

a() 

和file2.py我:

def b(self): 
    print(var) 

它只是給我雖然是錯誤。

+0

您試圖導入什麼內容?如果不是,它是在你的工作目錄相同的目錄? – Stephan

+0

你不要導入'file';您導入*模塊*或模塊中包含的名稱。 'import modulename',而不是'import filename.py'。您需要添加更具體的示例來更好地說明您的問題。 –

+0

你可以把你的文章中的實際導入語句和實際的絕對文件路徑? – user2357112

回答

7
import file2 

加載模塊file2並將其綁定到當前命名空間中的名稱file2bfile2可用file2.b而不是b,所以它不被認爲是一種方法。你可以用

from file2 import b 

修復它這將加載模塊,並從該模塊的b功能分配給名稱b。但我不會推薦它。在頂層導入file2並定義一個委託給file2.b的方法,或者定義一個mixin超類,如果您經常需要在不相關的類中使用相同的方法,則該類可以從中繼承。導入函數將其用作方法是令人困惑的,如果您嘗試使用的函數是在C中實現的,它會中斷。

相關問題