【发布时间】:2013-03-15 18:20:28
【问题描述】:
我有一个自动化测试,它使用为文件夹创建屏幕截图的功能。该函数被多个截图实例调用。在每次测试运行时,都会创建一个新文件夹,所以我不关心计数器重置。为了反映这些截图的拍摄顺序,我必须想出可以按顺序排序的名称。这是我的解决方案:
def make_screenshot_file(file_name):
order = Counter().count
test_suites_path = _make_job_directory()
return make_writable_file(os.path.join(test_suites_path,'screenshot',file_name % order))
class Counter():
__counter_instance = None
def __init__(self):
if Counter.__counter_instance is None:
self.count = 1
Counter.__counter_instance = self
else:
Counter.__counter_instance.count += 1
self.count = Counter.__counter_instance.count
它对我来说很好用。但我一直认为应该有一种更简单的方法来解决这个问题。在那儿?如果单例是唯一的方法,我的代码可以以任何方式优化吗?
【问题讨论】:
-
这实际上根本不是单例。您创建了许多
Counter实例,它们都指向一个“特殊实例”。这与只有一个实例不同。 -
另外,如果您对类属性有足够的了解,可以创建一个名为
__counter_instance的类属性,为什么不直接创建一个count类属性呢? -
@abarnert,对不起,我不明白你的第二条评论。你能展示一下整个代码的样子吗?
标签: python singleton python-2.6