das ist mein erster Beitrag im Forum. Ich bin auch in Python und OOP noch sehr neu. Vorhergehende Kenntnisse habe ich in PHP und C/C++.
Ich habe mit Borland C-Builder eine kleine Simulation eines Fadenpendels programmiert. Nun muss ich eine Projektarbeit über OOP schreiben und möchte daher eine Pendel-Klasse basteln. Dabei habe ich mich entschlossen gleich noch python zu lernen...
Die Pendel-Klasse soll folgendes können:
- Angaben zu Pendellänge, Amplitude(bzw. max. Winkel) und Phasenwinkel aufnehmen können
- daraus Frequenz, Schwingungsdauer, Kreisfrequenz berechnen
- max. Geschwindigkeit, max. Beschleunigung berechnen
- zu einem angegebenen Zeitpunkt Elongation, Winkel, Geschwindigkeit und Beschleunigung berechnen
Code: Alles auswählen
import math
from math import sqrt
from math import sin
class Pendel(object):
def __init__(self, laenge, amplitude, phasenwinkel):
self.l = laenge
self.winkel_max = amplitude
self.fi = phasenwinkel
self.y = None
self.y_max = None
self.f = None
self.T = None
self.omega = None
self.winkel = None
self.RAD_winkel = None
self.v = None
self.v_max = None
self.a = None
self.a_max = None
def calc(self):
self.T = 2*math.pi*sqrt(self.l/9.81)
print "Die Schwingungsdauer beträgt ",self.T," sek."
self.f = 1/self.T
print "Die Frequenz beträgt ",self.f," Hz"
self.omega = 2*math.pi*self.f
print "Die Kreisfrequenz beträgt ",self.omega," 1/sek"
self.y_max = sin(self.winkel_max*math.pi/180)
def calc_v_max(self):
self.v_max = self.y_max*2*math.pi*self.f
print "Die max. Geschwindigkeit beträgt ",self.v_max," m/s"
- ist der Code bis jetzt ok?
- Warum muss man jede einzelne Funktion aus math importieren
- wieso kommt eine Fehlermeldung, wenn ich eine Instanz der Klasse erstelle ohne die Attribute anzugeben und dann die Methode calc() aufrufe? z.B.
Code: Alles auswählen
>>> z = Pendel
>>> z.calc()
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
z.calc()
TypeError: unbound method calc() must be called with Pendel instance as first argument (got nothing instead)