J'écris un code qui prend un nom de fichier, ouvre le fichier, et analyse certaines données. J'aimerais faire cela dans une classe. Le code suivant fonctionne :
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()
Mais cela implique que je mette toute la machinerie d'analyse dans le champ d'application de la fonction __init__
pour ma classe. Cela semble bien maintenant pour ce code simplifié, mais la fonction parse_file
a également plusieurs niveaux d'indentation. Je préférerais définir la fonction parse_file()
comme une fonction de classe comme ci-dessous :
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
Bien entendu, ce code ne fonctionne pas car la fonction parse_file()
ne relève pas du champ d'application de la __init__
fonction. Existe-t-il un moyen d'appeler une fonction de classe à partir de l'intérieur d'une classe ? __init__
de cette classe ? Ou est-ce que je pense à cela de la mauvaise façon ?