Hallo Leute,
mal wieder ersehne ich mich um ein paar Antworten von euch.
Nun will ich endlich mal die Klassen in Python ein wenig genauer ansehen und zack, bin ich schon auf einige Problematiken gestossen.
Erstmal ein paar Worte dazu:
Da ich von Beruf Elektroniker bin, wollte ich mir ein nettes Script schreiben, welches vorerst das bekannte Ohmsche Gesetz als kleine "Aufwärmung" schreiben.
Hier mal der Code, der logischerweise nicht funktioniert^^
http://pastebin.com/rhTqmUq1
Das Problem an dem ganzen:
1. Wenn ich nun 2 größen miteinander Teile oder Multipliziere, um die neue Physikalische Größe zu erhalten, endet das ganze in einer Endlosschleife.
2. Alle diese Physikalischen Größen dürfen keinen negativen Wert annehmen. Wie stelle ich das an?
MfG und danke schon mal
Sehr sehr viele fragen zu Objekten in Py
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
Bin gerade zu müde für Erklärungen, aber hier ist eine Möglichkeit, wie es gehen könnte: http://www.python-forum.de/pastebin.php?mode=view&s=299
Oder man verwendet Multi Methods: http://www.python-forum.de/pastebin.php?mode=view&s=300
Finde ich persönlich übersichtlicher, aber YMMV.
Gruß,
Mick.
Oder man verwendet Multi Methods: http://www.python-forum.de/pastebin.php?mode=view&s=300
Finde ich persönlich übersichtlicher, aber YMMV.
Gruß,
Mick.
In specifications, Murphy's Law supersedes Ohm's.
-
- User
- Beiträge: 68
- Registriert: Mittwoch 16. November 2011, 23:20
Danke, wusste gar nicht dass es sowas in einer ziemlich ähnlichen Form bereits existiert.
Dann lag ich ja gar nicht mal so weit daneben mit meinem Versuch =)
Vielen Dank schon mal, ich werd mich dann melden, wenns an die komplexeren dinge der elektrotechnik geht. Des war schon mal ein erster guter schritt für meine Python kenntnisse
Dann lag ich ja gar nicht mal so weit daneben mit meinem Versuch =)
Vielen Dank schon mal, ich werd mich dann melden, wenns an die komplexeren dinge der elektrotechnik geht. Des war schon mal ein erster guter schritt für meine Python kenntnisse
-
- User
- Beiträge: 68
- Registriert: Mittwoch 16. November 2011, 23:20
Hallo, hab mal wieder ne frage...
Wie finde ich denn heraus, wenn eine dieser Klassen durch 1 geteilt wird?
wenn ich
benutze, kann ich ja nur herrausfinden, dass diese Klasse durch ein anderes objekt geteilt werden soll..
Wie finde ich denn heraus, wenn eine dieser Klassen durch 1 geteilt wird?
wenn ich
Code: Alles auswählen
def __div__(self, other):
-
- User
- Beiträge: 68
- Registriert: Mittwoch 16. November 2011, 23:20
Negativ, hab ich schon versucht und hat nicht funktioniert. Des hat nur funktioniert, als ich die Klasse selber durch 1 geteilt habe.
@Brainsucker: Ja aber das war doch die Frage, oder nicht? Wobei Du streng genommen hier immer Klasse sagst wo Du Exemplar meinst.
-
- User
- Beiträge: 68
- Registriert: Mittwoch 16. November 2011, 23:20
BlackJack hat geschrieben:@Brainsucker: Ja aber das war doch die Frage, oder nicht? Wobei Du streng genommen hier immer Klasse sagst wo Du Exemplar meinst.
Genau, so ist es.
Ich möchte wissen, wann der benutzer folgendes macht:
Code: Alles auswählen
x = BeliebigesObjekt()
y = 1 / x # Kehrwert des Objekts
Das Problem dabei ist, wenn ich die __div__ Funktion so aufbaue:
Code: Alles auswählen
def __div__(self, other):
Code: Alles auswählen
if other == 1:
Passiert schlichtweg gar nichts.
Edit:
__rdiv__ war die Lösung! Danke Leute!
-
- User
- Beiträge: 68
- Registriert: Mittwoch 16. November 2011, 23:20
Soo mal wieder ne frage^^
Und zwar:
Ich habe mich nun entschieden das ganze über das Modul unum zu realisieren. Dieses Modul erkennt die zusammenhänge zwischen den Physikalischen größen automatisch und gibt mir somit auch automatisch die resultierende Größe zurück.
Meine Frage dazu ist nun, dass ich eine Art "Formel" mit diesem Modul erstellen will, wo ich nur die Grundformel angeben muss und die Klasse dann automatisch diese "Einzelgrößen" als Parameter verlangt.
Ein einfaches Beispiel dazu:
So stelle ich mir das in etwa vor.
Diese (oben nicht definierte) ´Formel´ Klasse soll dann beim aufruf diese beiden Größen automatisch als Parameter ´benötigen´.
Wichtig bei dem ganzen Spektakel ist, dass teilweise auch Werte verarbeitet werden müssen, die KEINE physikalische Einheit haben (und sie somit auch nicht als Unum Objekt repräsentiert werden können)
Und zwar:
Ich habe mich nun entschieden das ganze über das Modul unum zu realisieren. Dieses Modul erkennt die zusammenhänge zwischen den Physikalischen größen automatisch und gibt mir somit auch automatisch die resultierende Größe zurück.
Meine Frage dazu ist nun, dass ich eine Art "Formel" mit diesem Modul erstellen will, wo ich nur die Grundformel angeben muss und die Klasse dann automatisch diese "Einzelgrößen" als Parameter verlangt.
Ein einfaches Beispiel dazu:
Code: Alles auswählen
import unum.units
# Geschwindigkeit
v = Formel(unum.units.M / unum.units.s)
Diese (oben nicht definierte) ´Formel´ Klasse soll dann beim aufruf diese beiden Größen automatisch als Parameter ´benötigen´.
Wichtig bei dem ganzen Spektakel ist, dass teilweise auch Werte verarbeitet werden müssen, die KEINE physikalische Einheit haben (und sie somit auch nicht als Unum Objekt repräsentiert werden können)