将列表传递给__init__方法时的ValueError

时间:2013-11-25 09:46:44

标签: python python-2.7

在下面的代码中,当我尝试使用__init__方法发送列表时,它会给出 Line 13: ValueError: expecting Array or iterable

class Ball:
    def __init__(self, c, r):
        self.center = c
        self.radius = r

    def move(self, move_vector):
        """Changes the position of the ball by the given vector."""
        self.center[0] += move_vector[0]
        self.center[1] += move_vector[1]



#This line gives error
balls = Ball(list(1,1),1);
balls.move((2,3))
print balls

但是当我把它改成跟随它起作用时,

class Ball:
    def __init__(self, c, r):
        #Changed from c to list(c)
        self.center = list(c)
        self.radius = r

    def move(self, move_vector):
        """Changes the position of the ball by the given vector."""
        self.center[0] += move_vector[0]
        self.center[1] += move_vector[1]



#Changed
balls = Ball((1,1),1);
balls.move((2,3))
print balls

我正在学习这门语言,请告诉我为什么会这样?

1 个答案:

答案 0 :(得分:1)

List在行中包含一个参数:

balls = Ball(list(1,1),1)

您提供带有两个参数的列表(1,1)。

H个。