2016-07-06 7 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 ...を使用すると、インポートされたオブジェクトは現在の名前空間に配置されます。これはオブジェクト自体への参照であり、モジュール変数ではありません。あなたが最新の変更を取得したい場合は、これを使用する:あなたは今、モジュールの名前空間の代わりと同じオブジェクトであるために使用される現在の1(中testと呼ばれる変数にアクセスしているので、作品

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) 

モジュールの名前空間で)。あなたはおそらくimport ... as ...の名前を持つモジュールを持っているときにしたいと思いますが、そこに行きます。

関連する問題