2017-07-30 19 views
0

私の問題の解決策を見つけるのを手伝ってください。 は、私は、ファイルmain.py私は最初のファイルからの変数のホストを取得できますか変数のインポートに関する問題

def arguments_reader(): 
    parser = argparse.ArgumentParser(description='test') 
    parser.add_argument('--bindhost', dest='host', default='localhost', 
         help='Hostname to bind (default:localhost)') 
    args = parser.parse_args() 
    return args.host 

if __name__ == "__main__": 
    action = arguments_reader() 
.... 

2つ目test.py

​​

がありますか? P.P.私はmain.pyを実行しています P.S.S.私はmain.pyにTESTクラスを実行することはできません(それは他のファイルで実行している)ので、私は、引数、test.pyで唯一のインポート、main.pyファイルのように

おかげでそれを投稿することができません

+0

それで、あなたはそれをインポートするのを止めていますか?引数を '__init __()'に明示的に定義する必要があります。 'def __init __(自己、ホスト)'。次に、 'main.py'にインスタンスを構築することができます。 't = TEST(action)' – AChampion

+0

'main.py'から' argument_reader'関数をインポートし、関数を呼び出して結果をある変数に代入します。次に、変数名を 'TEST'のコンストラクタに渡します。あるいは 'TEST'を' main.py'にインポートしたいとしたら、@AChampionは言ったことをします。 –

+0

[mcve]を付けてください。あなたがしていることを説明するために必要なすべてのコードを表示します。誰でもあなたのコードをコピー&ペーストして実行し、あなたが求めているのとまったく同じ結果を得ることができるはずです。 –

答えて

1

することができますTESTクラスのコンストラクタへの引数としてホストを渡すと、インスタンスを作成するには、引数のパースで行われたら..あなたのファイルは、この

main.py

test.py

from test import TEST 
import argparse 

..... 

def arguments_reader(): 
    parser = argparse.ArgumentParser(description='test') 
    parser.add_argument('--bindhost', dest='host', default='localhost', 
        help='Hostname to bind (default:localhost)') 
    args = parser.parse_args() 
    return args.host 

if __name__ == "__main__": 
    action = arguments_reader() 
    test = TEST(action) 
..... 

ANSが好きなはずです

class TEST(object): 

    def __init__(self, host): 
     print(host) 
0

あなたはmain.pyをインポートすることができますについて慎重になる

import main 

class TEST(object): 

    def __init__(self): 
     self.host = main.arguments_reader() 

ことの一つは、あなたがunittestを使用している場合は、UnitTest.main()は、コマンドライン引数を消費することです。

関連する問題