2013-09-27 17 views
0

我在模塊練習中有一個類,如下所示。 實踐/ example.py如何在python中導入一個類的對象

class Example : 

    #some code# 

e1= Example(); 
e2= Example(); 

,我不得不practice/__init__.py

from example import Example 

,我不得不main.py

import sys , python_practice 


e3 = python_practice.Example(); 


from python_practice import * 

e1.sum(1,2); 

,但我得到的錯誤作爲

Traceback (most recent call last): 
File "practice.py", line 11, in <module> 
e1.sum(1,2); 
NameError: name 'e1' is not defined 

我去哪裏了ong ....

是否可以將類的對象導入到另一個模塊?

回答

1

__init__設置您的包的名稱空間。由於__init__導入了Example,因此Example在包名稱空間中可用(例如python_practice.Example)。 e1而不是可用,因爲您在__init__中所做的任何操作都使e1無法使用。

當然,你幾乎可以隨時到達那裏......

from python_practice.example import e1 

應該工作。

2

是的,你只需要導入它。

當你做from python_practice import *,你會得到在practice/__init__.py定義的一切。在__init__.py中,您不會導入e1,因此您不要將其與from python_practice import *一起導入。

如果您希望e1在頂層python_practice處可用,則需要將其導入__init__.py。將您的代碼更改爲from example import Example, e1, e2

+0

如果假設我在python_practice模塊中沒有__init__.py如何導入對象?有沒有其他的方式來做到這一點。 – mkreddy

+0

如果您沒有'__init __。py',那麼您根本沒有包,因此根本無法導入它。如果你在路徑上直接使用了「practice」目錄,你可以用'from example example,e1,e2'來導入它,但是創建一個名爲'example'的頂級包可能不是一個好主意。 – BrenBarn

+0

你好BrenBarn .....謝謝你的幫助。現在我有一個不同的問題。我幫了一些忙。在上面的例子中,我知道類的實例是e1或e2。但在我的應用程序中,我設法將對象名稱作爲字符串。與該字符串,我怎麼能夠訪問該對象。 – mkreddy

相關問題