Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在类列表中输入单独的值_Python_Python 3.x - Fatal编程技术网

Python 在类列表中输入单独的值

Python 在类列表中输入单独的值,python,python-3.x,Python,Python 3.x,我想将值存储到类点数组中,当我尝试输入值时,这些值都是最后一个值。我希望每个都有不同的值 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) 我希望输出是

我想将值存储到类点数组中,当我尝试输入值时,这些值都是最后一个值。我希望每个都有不同的值

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)
我希望输出是
在这里输入code
0 1 2

这就是如何编写您想要实现的目标

class points:
    def __init__(self):
        self.x=None
        self.y=None
\uuuu init\uuuu()
特殊方法允许您初始化类的实例

mylist = [points() for _ in range(3)]
注意
点后的圆括号
。他们说要实例化类的一个实例:调用之前定义的
\uuuu init\uuu()
方法。否则只是对类的引用。

也不要使用
列表
作为变量名,这是一个内置函数

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
中的所有点实例都用相同的值初始化。

[范围内i的点(y)]
这是列表中类的相同引用的几倍……请正确设置代码格式(ctrl+K)请阅读有关如何在python中正确编写和使用类的教程。也不要将
list
用作名称变量<代码>列表是一个内置函数。在创建点时,您可以将x,y传递给点构造函数。这样就不需要额外的6行来分配数据。对初学者来说,这是一个很好的解释。@Error-syntactical懊悔是的,你是对的。我通常会尽量靠近操作码,我觉得这样会更容易理解答案。但在这种情况下,也值得添加这一部分。我将编辑答案