我不是新手,也不是python方面的经验,我发现自己陷入了一个棘手的问题,即使在Google和Bing上呆了很多小时,我也能找到答案。我的问题从以下代码开始:
class Rectangulo(object):
def __init__ (self, x, y, color, largo, alto, cambio_x, cambio_y):
self.alto = alto
self.largo = largo
self.color = color
self.cambio_x = cambio_x
self.cambio_y = cambio_y
self.x = x
self.y = y
def dibujar(self):
pygame.draw.rect(pantalla, self.color, (self.x, self.y, self.alto, self.largo))
def mover(self):
self.x += self.cambio_x
self.y += self.cambio_y
class Elipse(Rectangulo):
def __init__(self):
Rectangulo.__init__(self)
def dibujar (self):
pygame.draw.ellipse(pantalla, Rectangulo.color,(Rectangulo.x, Rectangulo.y, Rectangulo.alto, Rectangulo.largo))
这是目前最重要的一段代码。我已经找到了Elipse中存在的问题,并尝试了许多方法使继承生效,但是控制台继续显示此消息。在
^{pr2}$每次我试图用以下代码调用类函数dibujar():
for item in range(10):
x = random.randrange(685)
y = random.randrange(485)
alto = random.randrange(20, 71)
largo = random.randrange(20, 71)
cam_x = random.randrange(1, 2)
cam_y = random.randrange(-3, 3)
miObjeto = Rectangulo(x,y,VERDE,alto,largo,cam_x,cam_y)
miLista.append(miObjeto)
miEl = Elipse(x,y,VERDE,alto,largo,cam_x,cam_y)
miEl变量过去有自己的for循环,但我认为这样做对我来说不会那么混乱。我还是搞不清到底发生了什么。恐怕我需要帮助。在
您的
Eclipse
实例未能初始化,因为当它调用其基类Rectangulo
的初始化时,该类有7个参数(x,y颜色。。。等等)而你没有提供任何。在所以你有很多选择,但最常见的两种方法是:
Eclipse
的__init__
方法,然后将这些相同的参数传递到对Rectangulo.__init__(self, ...)
的调用中Elipse
中决定要用于Rectangulo
的参数,例如Rectangulo.__init__(self, 1, 2, "red", ...)
。在一般来说,你可能会想要第一个选择。e、 g
如果Elipse类本身不需要其他参数,则可以通过执行以下操作来简化上述操作:
^{pr2}$这基本上会将给Elipse实例化的所有参数传递给
Elipse.__init__
调用。在相关问题 更多 >
编程相关推荐