Я пишу код, который принимает имя файла, открывает файл и анализирует некоторые данные. Я бы хотел сделать это в классе. Работает следующий код:
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__
этого класса? Или я думаю об этом неправильно?