• 26.08.2025, 11:07
  • Registrieren
  • Anmelden
  • Du bist nicht angemeldet.

 

pharao

Moderator

python Problem

Samstag, 23. Oktober 2004, 20:21

Ich muß in python eine Klasse schreiben, die Punke und Vektoren verwaltet.
Wenn ich zwei Vektoren addiere, soll es möglich sein, diese Berechnung in der Form:

print (p1 + p2)
oder
p3 = p1 + p2

aufzurufen.
das ginge ja noch, wenn die Vektoren / Punkte mit nur 3 Werten gespeichert würden. sie werden aber homogen dargestellt, also noch ein vierter Wert, der z.B. bei der Addition gesondert berücksichtigt werden muß.
Ausserdem soll auch eine Berechnung mit den Operatoren "*" und "%" möglich sein, die das Skalarprodukt, das Produkt mit einem Skalar und das Vektorprodukt berechnen.

wie mache ich das? brauche ich dafür bestimmte Methoden in meiner Klasse?

Hilfe, Yogi! ;)
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.

major23hh

God

Re: python Problem

Samstag, 23. Oktober 2004, 21:31

yogi ist erst morgen abend wieder da :(

xx_ElBarto

God

Re: python Problem

Samstag, 23. Oktober 2004, 22:06

ich verstehe noch netma die aufgabe was überhaupt gemacht werden soll ;D ;D

pharao

Moderator

Re: python Problem

Sonntag, 24. Oktober 2004, 02:00

ich habs selber rausgefunden...
man kann mit
"def __add__(self, other):"
den plus-operator überschreiben.
"-" mit "__sub__(self, other)", "*" mit "__mul__..." und "%" mit "__mod__..."
morgen geht's weiter...

das lustige ist: wenn man sich überlegt, wie man das in einer Programmiersprache am einfachsten lösen könnte, ist es in python genau so gelöst wie man sich das vorstellt. aber einfach mal auszuprobieren, auf die Idee kommt man nicht... nein, man quält sich durch die API, man nervt Kommilitonen...

egal, es geht jetzt.
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.

Y0Gi

God

Re: python Problem

Montag, 25. Oktober 2004, 02:24

jop, operatoren überschreiben (wie z.b. in C++) ist eine sehr gute idee. alternativ sind auch entsprechende ("statische", aber sowas gibts in python nicht) methoden .add(), .sub() etc. denkbar, die ein tupel entgegennehmen und alle werte darin entsprechen zusammenrechnen. wäre aber wohl mehr code in der späteren anwendung.