Wywołanie funkcji klasy wewnątrz __init__
Piszę kod, który pobiera nazwę pliku, otwiera plik i analizuje niektóre dane. Chciałbym to zrobić w klasie. Działa następujący kod:
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()
Ale wiąże się to z umieszczeniem wszystkich maszyn do przetwarzania w zakresie__init__
funkcja dla mojej klasy. To wygląda dobrze teraz dla tego uproszczonego kodu, ale dla funkcjiparse_file
ma również kilka poziomów wcięcia. Wolę zdefiniować funkcjęparse_file()
jak funkcja klasy, jak poniżej:
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
Oczywiście ten kod nie działa, ponieważ funkcjaparse_file()
nie wchodzi w zakres__init__
funkcjonować. Czy istnieje sposób na wywołanie funkcji klasy od wewnątrz__init__
tej klasy? Czy myślę o tym w niewłaściwy sposób?