私は今Pythonでモジュールの使用法を研究しており、Markusが上記のコメントで尋ねる質問(「モジュールに埋め込まれているときに変数をインポートする方法は?」)に2つの観点から答えると思いました。
- 変数/関数、および
- クラスプロパティ/メソッド。
Markusの変数の再利用を示すために、メインプログラムf1.pyを書き直す方法は次のとおりです。
import f2
myStorage = f2.useMyVars(0) # initialze class and properties
for i in range(0,10):
print "Hello, "
f2.print_world()
myStorage.setMyVar(i)
f2.inc_gMyVar()
print "Display class property myVar:", myStorage.getMyVar()
print "Display global variable gMyVar:", f2.get_gMyVar()
再利用可能なモジュールf2.pyを書き直す方法は次のとおりです。
# Module: f2.py
# Example 1: functions to store and retrieve global variables
gMyVar = 0
def print_world():
print "World!"
def get_gMyVar():
return gMyVar # no need for global statement
def inc_gMyVar():
global gMyVar
gMyVar += 1
# Example 2: class methods to store and retrieve properties
class useMyVars(object):
def __init__(self, myVar):
self.myVar = myVar
def getMyVar(self):
return self.myVar
def setMyVar(self, myVar):
self.myVar = myVar
def print_helloWorld(self):
print "Hello, World!"
f1.pyを実行すると、出力は次のようになります。
%run "f1.py"
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Display class property myVar: 9
Display global variable gMyVar: 10
Markusのポイントは次のようになると思います。
- モジュールのコードを複数回再利用するには、モジュールのコードを関数またはクラスに配置します。
- モジュールにプロパティとして格納されている変数を再利用するには、クラス内のプロパティを初期化し、「getter」メソッドと「setter」メソッドを追加して、変数をメインプログラムにコピーする必要がないようにします。
- モジュールに格納されている変数を再利用するには、変数を初期化し、getter関数とsetter関数を使用します。セッター関数は、変数をグローバルとして宣言します。