在类列表中输入单独的值

2024-10-17 21:56:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将值存储到类点数组中,当我尝试输入值时,它会取所有值的最后一个值。我要每个都有不同的值

class points:
    x=None
    y=None

    list=[points for i in range(y)] list[0].x=0 list[0].y=0 list[1].x=1
    list[1].y=1 list[2].x=2 list[2].y=2

    for i in range(3):
        print(list[i].x)

我希望输出为enter code here0 1 2 把我得到2 2 2


Tags: innoneforcoderange数组pointslist
1条回答
网友
1楼 · 发布于 2024-10-17 21:56:39

这就是如何写下你想要达到的目标

class points:
    def __init__(self):
        self.x=None
        self.y=None

__init__()特殊方法允许您初始化类的实例

mylist = [points() for _ in range(3)]

注意points后面的圆括号。他们说要实例化类的一个实例:调用之前定义的__init__()方法。否则只是对类的引用。
也不要使用list作为变量名,它是一个内置函数

mylist[0].x=0
mylist[0].y=0
mylist[1].x=1
mylist[1].y=1
mylist[2].x=2
mylist[2].y=2

for i in range(3):
    print(mylist[i].x)

这是你想要的

编辑

正如注释中所指出的,为了避免六行属性初始化,可以将类编写为:

class points:
    def __init__(self, a=None, b=None):
        self.x=a
        self.y=b

然后:

mylist = [points(i, i) for i in range(3)]

现在mylist中的所有点实例都用相同的值初始化

相关问题 更多 >