一个类的多个实例

zpl*_*lot 3 python multiple-instances instances

我有一个叫做的课Points,我需要创造100分.我需要做类似的事情:

class Point(object)
...

for i in range(1,100):
    pi = Point()
Run Code Online (Sandbox Code Playgroud)

点应该被命名为p1,p2,...p100

显然,上面的行不起作用.

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

ndp*_*dpu 8

您可以使用列表推导创建多个对象:

# 100 points in list
points = [Point() for _ in range(100)]
Run Code Online (Sandbox Code Playgroud)


iCo*_*dez 5

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

相反,您可以使用dict理解str.format创建命名实例的字典:

points_dict = {"p{}".format(x):Point() for x in range(1, 101)}
Run Code Online (Sandbox Code Playgroud)

然后,您可以按名称访问这些实例,如下所示:

points_dict["p1"]
points_dict["p10"]
# etc.
Run Code Online (Sandbox Code Playgroud)