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懊悔是的,你是对的。我通常会尽量靠近操作码,我觉得这样会更容易理解答案。但在这种情况下,也值得添加这一部分。我将编辑答案