私は Python でアルゴリズムを作成しましたが、今はそれをもう少しオブジェクト指向にしようとしています。私はオブジェクトとクラスについて十分に理解しており (私が思うに)、Python のクラスの構文をオンラインで読むことに時間を費やしています。ただし、私の質問は非常に基本的なものであり、助けがあれば幸いです。
3 つの定義を含むクラス XML を作成しました。__init__
オブジェクトの初期化にも使用しました。
class XML():
def __init__(self,f):
self.f = f
def xmlToString(self):
data = self.f.read()
self.f.close()
...
return station_arr
def exportArray(self):
f= open('stations/'+self.STATION+'.txt')
lines= f.readlines()
...
return phenomena,parameters
def calcAvg(self):
split_phenom = self.phenomena.split(';')
list_of_lists = []
for e in self.parameters:
...
return phenomena,parameters
次に、main.py でオブジェクトをインスタンス化し、必要なメソッドを次のように呼び出します。
stations_names ['one', 'two'...]
for station in stations_names:
f = open('respond.txt','r')
xmlStr = ClassXML.XML(f)
stations_arr = xmlStr.xmlToString()
xmlRead = ClassXML.XML(stations_arr)
phenomena,parameters = xmlRead.exportArray()
xmlRetr = ClassXML.XML(phenomena,parameters)
avg_dict,dict_values = xmlRetr.calcAvg()
私が得るエラーはこれです:
f= open('stations/'+self.station+'.txt')
AttributeError: XML instance has no attribute 'station'
だから私は問題が何であるかを理解しています。変数「ステーション」をクラスに渡す必要がある方法。しかし、init関数に含めようとすると、さまざまなエラーが発生します。
xmlStr = ClassXML.XML(f)
TypeError: __init__() takes exactly 3 arguments (2 given)
次に、複数のinit関数が必要かもしれないと考えましたが、私が知る限り、これは Python では不可能です。正直なところ、私は問題を処理する方法がよくわかりません。どんなヒントでも役に立ちます。
ありがとう
PS タイトルが私の質問を正しく説明しているかどうかはわかりませんが、適切な言葉が見つかりません!
実装された最終回答
class XML():
def __init__(self,f,station):
self.f = f
self.station =station
def xmlToString(self):
data = self.f.read()
self.f.close()
...
return station_arr
def exportArray(self):
f= open('stations/'+self.STATION+'.txt')
lines= f.readlines()
...
return phenomena,parameters
def calcAvg(self,phenomena,parameters):
split_phenom = self.phenomena.split(';')
list_of_lists = []
for e in self.parameters:
...
return avg_dict,dict_values
** 主要 **:
for station in stations_names:
f = open('respond.txt','r')
## Instantiate class: ClassXmlString
xmlStr = ClassXML.XML(f,station)
stations_arr = xmlStr.xmlToString()
if stations_arr !='':
phenomena,parameters = xmlStr.exportArray()
avg_dict,dict_values = xmlStr.calcAvg(phenomena,parameters)