Besser als "leere returns" wegzulassen ist es, die print-Anweisung aus den Methoden zu verbannen und stattdessen "volle returns" zu verwenden.
Was umfang() und inhalt() angeht, so wäre es passender, keine Seitenlänge zu übergeben, weil es ja Methoden eines Quadrat-Objekts sind, was zu jedem Zeitpunkt schon eine bestimmte Seitenlänge hat.
Ich würde sogar noch weitergehen und dafür gar keine Methode verwenden, sondern es in Datenattributen ablegen, die jeweils beim Skalieren neu berechnet werden.
Nimmt man statt turtle das
frog-Modul, dann könnte das ganze so aussehen:
Code: Alles auswählen
from frog import Pool, Frog
class Quadrat(Frog):
def __init__(self,tafel,seite=50):
Frog.__init__(self, tafel)
self.seite = seite
self.skaliere(1)
def verschiebe(self, *zentrum):
self.pos = zentrum
def loesche(self):
self.exit()
def skaliere(self, faktor):
self.seite *= faktor
self.umfang = 4*self.seite
self.flaeche = self.seite ** 2
self.shape = (0,0), (self.seite,0), (self.seite,self.seite), (0,self.seite), (0,0)
tafel = Pool()
quad1 = Quadrat(tafel)
quad1.verschiebe(40,50)
quad2 = Quadrat(tafel, seite=40)
quad2.color = "red"
quad2.verschiebe(-50,-30)
quad2.skaliere(2)
print quad2.flaeche
print quad1.umfang
quad1.loesche()
tafel.ready()
Hast du Python >= 2.6, dann sollte das mit dem turtle-Modul ähnlich gehen. Hast du noch Python <= 2.5, dann hast du noch die alte, magere turtle-Fassung. Mit der kommt nicht so viel Freude auf. Dann entweder Python auf eine aktuellere Version bringen oder xturtle einsetzen. (Oder den Frosch)