我正在编写一些使用文件名,打开文件并解析出一些数据的代码。我想在课堂上做到这一点。以下代码有效:
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()
但是,这涉及到我将所有解析机制置于__init__
类的功能范围之内。现在,对于此简化的代码来说,这看起来还不错,但是该函数parse_file
还具有许多缩进级别。我更喜欢将函数定义parse_file()
为类函数,如下所示:
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
当然,此代码不起作用,因为该函数parse_file()
不在函数范围内__init__
。有没有办法从该类内部调用类函数__init__
?还是我想这是错误的方式?