我有一个可以使用某些用户首选项启动的应用程序。为此,我使用内置包ConfigParser
中的ConfigParser
类。我派生了ConfigParser
的子类,它实现了__getitem__
和__setitem__
方法,以便获取/设置一些首选项,而无需每次指定各自的部分,子部分和选项。
由于其中一些首选项(工作目录,日志记录级别......)对我的代码非常敏感,我想在每次修改其中一个项目时检查它们。为此,我目前考虑两种方法:
编写一个方法,每次修改其中一个项目时检查我的每个项目。非常简单,但效率不高,因为每次更改一个项目时,都会检查整个首选项。
为每个首选项(check_logger,check_working_directory,check_blabla ...)编写check_item方法,每次设置一个项目时,将使用getattr(self,'check_%s' % item)(item)
我倾向于认为第二种方法比第一种方法更好。
你会看到这些设计的一些替代品吗?
非常感谢
埃里克
答案 0 :(得分:1)
根据规则的复杂程度(以及编写/将编写它们的人),您可以:
对于简单到中等复杂的约束,第一选择会有我的好处。但是请注意,就像我在评论中解释的那样,我不认为“一次检查一个项目”的方法是有效的 - 除了最简单的情况。这是因为某些项目值可能有效,也可能无效,具体取决于一个或多个其他项目的值。追踪值可能间接破坏的规则并不容易。