将一个类中的对象追加到另一个类的列表中

时间:2020-10-22 09:59:04

标签: python list class append

我目前正在处理有关课堂的任务。在此任务中,我必须创建一个名为“球”的类。此类应具有 init 方法,该方法添加一个名为position的自变量。这应该是x和y位置的列表。 之后,我应该创建另一个名为System的类。此类应注意要执行的主要动作。 然后,我必须在System类中实现add ball方法,该方法将Ball对象附加到System内部的类列表中。该方法中的参数应为x和y。

class Ball:
    def __init__ (self, x, y):
            self.position = [x, y]

ball1 = Ball(3, 6)
print (ball1.position)
ball2 = Ball(5, 8)
print (ball2.position)
ball3 = Ball(4, 4)
print (ball3.position)


class System:
    def __init__(self):
        self.more_balls = []
    def add_balls (self, x, y):
        self.more_balls.append(Ball(x,y))
        
ballx = System()
ballx.add_balls(2, 4)
ballx.add_balls(5,5)
ballx.add_balls(8,8)
ballx.add_balls(2,4)

print (ballx.more_balls)

我将如何修复代码。预期结果是将球附加到more_balls列表中。 这是我得到的输出:

[3, 6]
[5, 8]
[4, 4]
[<__main__.Ball object at 0x12308eb80>, <__main__.Ball object at 0x12308edf0>,      <__main__.Ball object at 0x12308eeb0>, <__main__.Ball object at 0x12308e1f0>]

2 个答案:

答案 0 :(得分:1)

您在add_balls函数中犯了一个小错误。您忘记附加position对象的Ball。纠正方法如下:

def add_balls(self, x, y):
    self.more_balls.append(Ball(x, y).position)

因此,这是完整的代码:

class Ball:
    def __init__(self, x, y):
        self.position = [x, y]


ball1 = Ball(3, 6)
print(ball1.position)
ball2 = Ball(5, 8)
print(ball2.position)
ball3 = Ball(4, 4)
print(ball3.position)


class System:
    def __init__(self):
        self.more_balls = []

    def add_balls(self, x, y):
        self.more_balls.append(Ball(x, y).position)


ballx = System()
ballx.add_balls(2, 4)
ballx.add_balls(5, 5)
ballx.add_balls(8, 8)
ballx.add_balls(2, 4)

print(ballx.more_balls)

输出:

[3, 6]
[5, 8]
[4, 4]
[[2, 4], [5, 5], [8, 8], [2, 4]]

答案 1 :(得分:0)

我认为System类不负责接收postion和实例化Ball对象。

所以我会这样:

class Ball:
    def __init__ (self, x, y):
            self.position = [x, y]

class System:
    def __init__(self):
        self.more_balls = []
    def add_ball (self, ball):
        self.more_balls.append(ball)

ball1 = Ball(3, 6)
print (ball1.position)
ball2 = Ball(5, 8)
print (ball2.position)
ball3 = Ball(4, 4)
print (ball3.position)        

ballHandler = System()
ballHandler.add_ball(ball1)
ballHandler.add_ball(ball2)
ballHandler.add_ball(ball3)

print (ballHandler.more_balls)
print (ballHandler.more_balls[0].position)