ファイル名を取得し、ファイルを開き、データを解析するコードを書いています。クラスでこれをしたいのですが。次のコードは機能します。
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__
そのクラス内からクラス関数を呼び出す方法はありますか?それとも私はこれを間違った方法で考えていますか?