我有一个名为Points
的课程,我需要创建100分。
我需要做类似的事情:
class Point(object)
...
for i in range(1,100):
pi = Point()
这些点应命名为p1
,p2
,... p100
显然上面的行不起作用。
问题是:我知道我可以在循环中使用exec
来创建100个积分但是有没有更好的方法可以不使用exec
?
答案 0 :(得分:8)
您可以使用列表解析创建多个对象:
# 100 points in list
points = [Point() for _ in range(100)]
答案 1 :(得分:5)
在Python中,创建/使用动态变量被认为是一种不好的做法。您很容易忘记它们,导致名称冲突等。
相反,您可以使用dict comprehension和str.format
来创建命名实例的字典:
points_dict = {"p{}".format(x):Point() for x in range(1, 101)}
然后,您可以按名称访问这些实例:
points_dict["p1"]
points_dict["p10"]
# etc.
答案 2 :(得分:0)
非常感谢您的回答。我从中学到了很多东西。
无论如何,我不需要点数列表或点数字典。
想象一下,我开始写作:
p1 = Point() p2 = Point() 。 。 。 p100 = Point()
我将获得100分,仅此而已。这就是我需要的。我认为如上所述将100行代码放入程序中并不是一个好习惯!此外,要创建的点数可能是可变的。这就是为什么我认为应该有一种优雅的方式来做到这一点。谢谢。