向具有实例变量访问权限的类添加函数

2024-10-02 16:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,它接收一些数据并将其组织到不同的容器中。这是由不同输入数据的不同解析器完成的

class ParsingObject(object):
    def __init__(self):
        self.organized_data_1 = OrganizedContainer1()
        self.organized_data_2 = OrganizedContainer2()
        self.organized_data_3 = OrganizedContainer3()

    def parse_data(format, data):
        if format == 'format1':
            # Some code that takes data, and populate containers
            self.organized_data_1 = x
            self.organized_data_2 = y
            self.organized_data_3 = z
        if format == 'format2':
            # Some code that takes data, and populate containers differently
            self.organized_data_1 = y
            self.organized_data_2 = z
            self.organized_data_3 = x

我想将所有解析器存储在一个单独的文件中,然后将它们导入parse_data函数

函数需要访问实例变量(有组织的数据)才能填充它们

class ParsingObject(object):
    def __init__(self):
        self.organized_data_1 = OrganizedContainer1()
        self.organized_data_2 = OrganizedContainer2()
        self.organized_data_3 = OrganizedContainer3()

    def parse_data(format, data):
        import .parsers
        if format == 'format1': parsers.parser1(data)
        if format == 'format2': parsers.parser2(data)

解析器是这样的

def parser1(data):
    self.organized_data_1 = x
    self.organized_data_2 = y
    self.organized_data_3 = z

我希望将解析器放在另一个函数中,以使添加额外的解析器更加方便,并防止主对象中出现混乱。我应该把对象传递给解析器吗

def parser1(self,data):
    self.organized_data_1 = x
    self.organized_data_2 = y
    self.organized_data_3 = z

还是有别的办法?如果我这样设置,我最终会得到循环模块导入


Tags: 数据函数selfformat解析器dataifobject