【发布时间】:2014-05-18 05:58:48
【问题描述】:
我正在使用海龟图形制作太阳系复制品。 我想制作一个都继承自同一个海龟超类“solar_element”的恒星和行星,但我遇到了问题。
我可以毫无问题地使用两个不同的海龟类来制作恒星和行星:
from turtle import Turtle
class star(Turtle):
def __init__(self, Name, Radius, Mass, Colour):
Turtle.__init__(self, shape = "circle")
self.Name = Name
self.Radius = Radius
self.Mass = Mass
self.color(Colour)
self.shapesize(self.Radius/50)
class planet(Turtle):
def __init__(self, Name, Radius, Mass, Colour, Dist, velX, velY):
Turtle.__init__(self, shape= "circle")
self.Name = Name
self.Radius = Radius
self.Mass = Mass
self.color(Colour)
self.Dist = Dist
self.velX = velX
self.velY = velY
self.x_pos = sun.Radius + self.Dist + self.Radius
self.y_pos = 0
self.shapesize(self.Radius/50)
sun = star('myStar', 500.0, 15000.0, "yellow");
earth = planet('P1', 150.0, 1000.0, "green", 0.25, 0.5, 2.0);
但是当我试图让它们从一个超类继承时,像这样:
from turtle import Turtle
class solar_element(Turtle):
def __init__(self, Name, Radius, Mass, Colour):
self.Name = Name
self.Radius = Radius
self.Mass = Mass
self.Colour = Colour
self.color(self.Colour)
self.shapesize(self.Radius/50)
class star(solar_element):
def __init__(self, Name, Radius, Mass, Colour):
solar_element.__init__(self, Name, Radius, Mass, Colour)
Turtle.__init__(self, shape = "circle")
class planet(solar_element):
def __init__(self, Name, Radius, Mass, Colour, Dist, velX, velY):
solar_element.__init__(self, Name, Radius, Mass, Colour)
Turtle.__init__(self, shape = "circle")
self.Dist = Dist
self.velX = velX
self.velY = velY
self.x_pos = sun.Radius + self.Dist + self.Radius
self.y_pos = 0
sun = star('myStar', 500.0, 15000.0, "yellow");
earth = planet('P1', 150.0, 1000.0, "green", 0.25, 0.5, 2.0);
我收到以下错误:
Traceback (most recent call last):
File "C:\Users\Kev\Dropbox\OOP\testing_classes.py", line 62, in <module>
sun = star('myStar', 500.0, 15000.0, "yellow");
File "C:\Users\Kev\Dropbox\OOP\testing_classes.py", line 47, in __init__
solar_element.__init__(self, Name, Radius, Mass, Colour)
File "C:\Users\Kev\Dropbox\OOP\testing_classes.py", line 42, in __init__
self.color(self.Colour)
File "C:\Python33\lib\turtle.py", line 2208, in color
pcolor = self._colorstr(pcolor)
File "C:\Python33\lib\turtle.py", line 2688, in _colorstr
return self.screen._colorstr(args)
AttributeError: 'star' object has no attribute 'screen'
我意识到我可以只使用两个类,但我想使用一个超类,因为我仍在尝试学习 python。
【问题讨论】:
-
请发布
Turtle课程。 -
@Remolten 你是什么意思?我没有其他要发布的,代码的第一部分可以尝试。
-
我的错,忘了python有一个turtle模块。
标签: python class inheritance superclass turtle-graphics