一个类的多个实例

时间:2014-01-28 19:09:19

标签: python multiple-instances instances

我有一个名为Points的课程,我需要创建100分。 我需要做类似的事情:

class Point(object)
...

for i in range(1,100):
    pi = Point()

这些点应命名为p1p2,... p100

显然上面的行不起作用。

问题是:我知道我可以在循环中使用exec来创建100个积分但是有没有更好的方法可以不使用exec

3 个答案:

答案 0 :(得分:8)

您可以使用列表解析创建多个对象:

# 100 points in list
points = [Point() for _ in range(100)]

答案 1 :(得分:5)

在Python中,创建/使用动态变量被认为是一种不好的做法。您很容易忘记它们,导致名称冲突等。

相反,您可以使用dict comprehensionstr.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行代码放入程序中并不是一个好习惯!此外,要创建的点数可能是可变的。这就是为什么我认为应该有一种优雅的方式来做到这一点。谢谢。