我正在制作一个太阳系副本使用乌龟图形。 我想制作一个恒星和一个既能从相同的乌龟超类“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你是什么意思?我没有其他任何东西可以发布,代码的第一部分可以尝试。 – user3502196
我的不好,忘了python有一个乌龟模块。 –