我正在尝试将元组列表合并到不同的类中。
我有一个类解析器,其中元组将被合并。类和相应的函数定义为:
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))
我希望datatup
中的Class Window
会附加到booklist
中的Class parser
。但事实并非如此。
所以,只是为了显示parsing_write
' print(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
中附加列表。
N.B。请忽略每个列表的长度,因为我已将其删除。
答案 0 :(得分:0)
在您的Window类中,您没有返回列表,那么您的解析器如何知道您要执行的操作?只需向self.datatup发出一个return语句,然后将该方法调用的结果传递给Parser类,它应该可以工作。
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)