我目前正在处理有关课堂的任务。在此任务中,我必须创建一个名为“球”的类。此类应具有 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>]
答案 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)