Sto scrivendo del codice che accetta un nome file, apre il file ed analizza alcuni dati. Mi piacerebbe farlo in una classe. Il seguente codice funziona:
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()
Ma mi coinvolge mettendo tutti i macchinari di analisi nell'ambito della __init__funzione per la mia classe. Ora sembra a posto per questo codice semplificato, ma la funzione parse_fileha anche alcuni livelli di rientro. Preferirei definire la funzione parse_file()come una funzione di classe come di seguito:
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
Naturalmente questo codice non funziona perché la funzione parse_file()non rientra nell'ambito della __init__funzione. C'è un modo per chiamare una funzione di classe dall'interno __init__di quella classe? O sto pensando a questo nel modo sbagliato?