私がやろうとしていることを完全に扱っていない多くの記事に出くわしました。これが重複した質問ではないことを願っています。
PCの外部にあるいくつかの実世界のオブジェクトとインターフェイスするPythonスクリプトを書いています。これらのオブジェクトとのインターフェースに必要な関数を含むクラスを作成しました。また、これらのクラスのインスタンスをインスタンス化し、それらからデータを取得し、すべてをCSVファイルに保存する、オブジェクト指向ではない関数を正常に作成しました。それはすべてうまくいきます。私がつまずくのは、関数をより適応性のあるものにして、別のクラスインスタンスを追加したり、既存のインスタンスから別のデータポイントを取得したりするたびに関数を書き直す必要がないようにすることです。
私が試みているアプローチは、クラスインスタンスの名前と、それらのインスタンスからデータを取得するための特定の関数名を含むリストを作成することです。次に、このリストを別の関数に渡します。この他の関数は、理想的には、CSVファイルのヘッダーを作成して(データをより簡単に解釈できるようにするため)、データの収集に進みます。
擬似コード:
inst1 = my_class_1()
inst2 = my_class_2()
filename = 'fubar.csv'
control_list = ['inst1', 'value1', 'inst2', 'value']
my_fucntion(filename, control_list):
# Code to create a header for CSV file in the form inst1-value1, inst2-value2
# Loop to control the number of times to grab data
# Code which iterates control_list and builds up things like inst1.value1(), inst2.value2(),
# etc. and then appends the results to a list
# write results list to filename
control_listのすべての要素を文字列として関数に渡すと、結果ファイルのヘッダーを簡単に生成できますがinst1.value1()
、Pythonがクラス内の関数にアクセスできるように、これらの文字列を取得して次のようなものを生成する方法がわかりません。クラスからデータを取得できるよう[inst1.value1(), inst2.value2()]
にリストを作成すると、この方法でヘッダーファイルを作成する方法がわかりません。
上で概説したアプローチが機能しない場合、私は他のアプローチを受け入れます。