Estou escrevendo um código que pega um nome de arquivo, abre o arquivo e analisa alguns dados. Eu gostaria de fazer isso em uma aula. O código a seguir funciona:
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()
Mas isso envolve colocar todo o mecanismo de análise no escopo da __init__
função da minha classe. Parece bom agora para esse código simplificado, mas a função também parse_file
possui alguns níveis de indentação. Eu preferiria definir a função parse_file()
como uma função de classe como abaixo:
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
É claro que esse código não funciona porque a função parse_file()
não está dentro do escopo da __init__
função. Existe uma maneira de chamar uma função de classe de dentro __init__
dessa classe? Ou estou pensando nisso da maneira errada?