我正在编写一些代码,它采用文件名、打开文件并解析出一些数据。我想在类里面做这个。以下代码有效:
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__
中调用类函数?还是我想错了?
最佳答案
这样调用函数:
self.parse_file()
您还需要像这样定义 parse_file()
函数:
def parse_file(self):
parse_file
方法在调用时必须绑定(bind)到一个对象(因为它不是静态方法)。这是通过在对象的实例上调用函数来完成的,在您的情况下,实例是 self
。
关于python - 在 __init__ 中调用类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12646326/