2016-07-06 83 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 ...,但是你去了。

相关问题