I'm writing some code that takes a filename, opens the file, and parses out some data. I'd like to do this in a class. The following code works:
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()
But it involves me putting all of the parsing machinery in the scope of the __init__
function for my class. That looks fine now for this simplified code, but the function parse_file
has quite a few levels of indention as well. I'd prefer to define the function parse_file()
as a class function like below:
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
Of course this code doesn't work because the function parse_file()
is not within the scope of the __init__
function. Is there a way to call a class function from within __init__
of that class? Or am I thinking about this the wrong way?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…