2016-07-06 31 views
0

我做了一個類定義...談到一個變量爲一個類的對象,通過導入功能

class Element(): 
def __init__(self, word_list, type): 

    self.type = type 
    self.list = word_list 

而在另一個Python文件(practice_page_1)函數定義...

from class_element import Element 

test_list = [] 

def test(word_list): 
    num = 0 
    for letter in word_list: 
     if letter == 'd': 
      global test_list 
      test_list = word_list[:num + 1] 
      test_list = Element(test_list, 'letters') 
      return True 
     num += 1 

,然後在另一個Python文件中的函數的操作...

from practice_page_1 import test 
from practice_page_1 import test_list 

my_list = ['a', 'b', 'c', 'd', 'a', 'a', 'e', 'f', 'a', 'g'] 
test(my_list) 
print(test_list) 

當打印test_list它打印n空列表[],而我期待它打印一個類對象。但是,如果我將完全相同的操作線移回practice_page_1,則它會將test_list打印爲類對象。爲什麼是這樣?

+0

請修復您的縮進。 –

回答

0

當您使用from ... import ...時,導入的對象被放入當前名稱空間。它是對象本身的引用,而不是模塊變量。如果你想獲得最新的變化,使用此:

import practice_page_1 

my_list = ['a', 'b', 'c', 'd', 'a', 'a', 'e', 'f', 'a', 'g'] 
practice_page_1.test(my_list) 
print(practice_page_1.test_list) 

這工作,因爲你現在訪問的模塊命名空間,而不是當前的(這曾經是相同的對象稱爲test變量在模塊名稱空間中)。當你有一個名字很長的模塊時,你可能想要做import ... as ...,但是你去了。

相關問題