我已经编写了一些我想通过创建我的类的多个实例来测试的类。我希望这些实例的名称遵循模式p1
,p2
等:
p1 = Point(1,1)
p2 = Point(2,2)
p3 = Point(3,3)
对于很多变量,有没有办法快速完成这项工作?像这样:
for i in range(1,1000):
*magic goes here*
isinstance(p500, Point) # True
答案 0 :(得分:6)
它被称为列表:
p = [Point(1, 1), Point(2, 2), Point(3, 3)]
现在p[0]
是您的p1
等等。
p = [Point(i, i) for i in range(1, 1000)]
isinstance(p[500], Point) # True
答案 1 :(得分:1)
您可以将它们存储为字典中的键
vars_dict = {}
for i in range(1,1000):
vars_dict['p{}'.format(i)] = Point(i, i)
isinstance(vars_dict['p500'], Point) # True
或在@RemcoGerlich的迭代中
答案 2 :(得分:1)
您可以修改当前范围,更改globals()
例如:
globals()['p234'] = Point(1, 2)
print p234
然而,这是一种非常差的质量方法:难以理解,维护,创建一个可怕的范围污染而且它很慢(尽管这可能不重要)。使用正确的数据容器,我建议一个列表:
points = [Point(i, i) for i in xrange(500)]
assert isinstance(p[-1], Point)
这样你就可以在每个对象上做一个断言,如:
points = [Point(i, i) for i in xrange(500)]
for point in points:
assert isinstance(point, Point)