ファイル名を受け取り、ファイルを開き、データを解析するコードを書いています。これを授業でやりたい。次のコードが機能します。
class MyClass():
def __init__(self, filename):
self.filename = filename
self.stat1 = None
self.stat2 = None
self.stat3 = None
self.stat4 = None
self.stat5 = None
def parse_file():
#do some parsing
self.stat1 = result_from_parse1
self.stat2 = result_from_parse2
self.stat3 = result_from_parse3
self.stat4 = result_from_parse4
self.stat5 = result_from_parse5
parse_file()
__init__
ただし、すべての解析機構をクラスの関数のスコープに入れる必要があります。この簡略化されたコードでは問題ないように見えますが、関数parse_file
にはかなりのレベルのインデントもあります。parse_file()
関数を以下のようなクラス関数として定義することをお勧めします。
class MyClass():
def __init__(self, filename):
self.filename = filename
self.stat1 = None
self.stat2 = None
self.stat3 = None
self.stat4 = None
self.stat5 = None
parse_file()
def parse_file():
#do some parsing
self.stat1 = result_from_parse1
self.stat2 = result_from_parse2
self.stat3 = result_from_parse3
self.stat4 = result_from_parse4
self.stat5 = result_from_parse5
もちろん、関数parse_file()
は関数のスコープ内にないため、このコードは機能しません__init__
。そのクラス内からクラス関数を呼び出す方法はあり__init__
ますか? それとも、これについて間違った方法で考えていますか?