python - 在 __init__ 中调用类函数

标签 python class

我正在编写一些代码,它采用文件名、打开文件并解析出一些数据。我想在类里面做这个。以下代码有效:

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/

相关文章:

python - 考虑优先级偏好,将三列合并为一列

python - 如何在 Python 中解析具有 UTC 偏移量的时区?

python变量,类

java - 是否可以以排序的方式获取类字段?

Python - 解构函数不删除对象实例

html - 如何在 `class` 和 `id` 之间进行选择

python - 在 pandas 数据框中聚合

python - 为什么 `arr.take(idx)` 比 `arr[idx]` 快

php - 如何将一些 php 类包含到 Joomla tmpls 中

python - 是否可以使用lxml目标解析接口(interface)在中间中断解析大型xml文件?