我正在製作一個太陽系副本使用烏龜圖形。 我想製作一個恆星和一個既能從相同的烏龜超類「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有一個烏龜模塊。 –