我正在Python / PyQt4中制作一个超级简单的Notepad ++克隆,我想知道哪些存储编辑器选项卡数据的选项:
选项1:我有一个名为QQCodeTab的类,它存储当前选项卡的当前Qsci.QsciScintilla实例,文件路径,当前语言等。这些实例通过字典映射到选项卡索引。
选项2:与选项1相同,但删除了类并将所有内容存储在dict中(例如:{1: {"scintilla": <blah>, "filepath": "C:/File/whatevs.py"}, "language": "python"}
)
我的代码评论可以更好地解释它。
from PyQt4 import QtGui, Qsci
class QQCodeEditor(QtGui.QTabWidget):
def __init__(self, parent=None):
QtGui.QTabWidget.__init__(self, parent)
self.new_tab()
self.new_tab()
# Option 1: Maps index to tab object
# Option 2: Maps index to dict of options
self.tab_info = {}
def new_tab(self):
scin = Qsci.QsciScintilla()
index = self.addTab(scin, "New Tab")
def get_tab_info(self, index):
# Returns QQCodeTab object
return self.tab_info[index]
def save(self, index):
# Option 2: Save dialog boc and file system stuff goes here
pass
class QQCodeTab(object):
def __init__(self, scintilla, editor):
self.scintilla = scintilla
self.editor = editor
def save(self):
# Option 1: Save dialog box and file system stuff goes here
pass
答案 0 :(得分:0)
如果您想知道是否使用一类字典,您可能需要namedtuple
。这为您提供了dict
的简单性,具有类的属性语法:
from collections import namedtuple
FooBar = namedtuple("FooBar", ["these", "are", "the", "attributes"])
FooBar(123, 324, the=12, attributes=656).these
#>>> 123