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_file
ha 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?