附加另一个类的列表

2024-03-28 08:34:04 发布

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

我正在尝试将元组列表从合并到不同的类。你知道吗

我有一个类解析器,其中元组将被合并。类和相应的函数定义为:

class parser():
    def __init__(self):
        self.booklist = []
    def parsing_write(self, filename):
        # print(self.booklist)
        datalist = []
        writer = BibTexWriter()
        writer.indent = '    '
        print(self.booklist)
        for ref in self.booklist:
            print(type(ref))
            datadict = dict((k, v) for k, v in
                            zip(self.entries, ref) if v is not None)
            datalist.append(datadict)

在另一个函数中,我做了:

import pybib
class Window(Gtk.ApplicationWindow):
    def __init__(self, application, giofile=None):
        self.Parser = pybib.parser()

    def get_data(self, datalist):
        datatup = tuple([name] + [self.KeyEntry.get_text()] +
                        [self.all_fields[field].get_text() or None
                         for field in fields])
        print(type(datatup))
        print(type(self.Parser.booklist))
        self.Parser.booklist.append(datatup)
        print((self.Parser.booklist))

我希望来自Class Windowdatatup会附加到Class parser中的booklist。但事实并非如此。 所以,为了展示,来自parsing_writeprint(self.booklist)的输出 是:

[('article', 'ebert2013', 'First-principles', 'Mankovsky, S.', None, '2013')]

然后,如果我调用get_data,我得到的结果是:

<class 'tuple'>
<class 'list'>
[('Article', 'key', None, 'au', None, None, None, None, None)]

但是我希望这个列表会附加在parsing_write中。你知道吗

注意。请忽略每个列表的长度,因为我已经将它们剥离了。你知道吗


Tags: selfnoneparser列表forgetdefclass
1条回答
网友
1楼 · 发布于 2024-03-28 08:34:04

在Window类中,您没有返回列表,那么解析器如何知道您要做什么呢?只需要对self.datatup文件然后将方法调用的结果传递给类解析器,它应该可以工作。你知道吗

import pybib
class Window(Gtk.ApplicationWindow):
    def __init__(self, application, giofile=None):
        self.Parser = pybib.parser()

    def get_data(self, datalist):
        self.datatup = tuple([name] + [self.KeyEntry.get_text()] +
                        [self.all_fields[field].get_text() or None
                         for field in fields])
        print(type(self.datatup))
        print(type(self.Parser.booklist))
        self.Parser.booklist.append(self.datatup)
        print((self.Parser.booklist))
        return(self.datatup)

相关问题 更多 >