Global local __privat?
Verfasst: Freitag 5. März 2004, 12:39
Halli, hallo!
Habe (vermutlich) ein Problem mit den Namensräumen von Variablen.
Folgende Problemstellung:
Es gib die zwei Objekte A und B mit ihren Variblen=Attributen der Klasse K. Wenn ich Python bis hierhin richtig verstehe, haben die Klassenfunktionen als estes Attribut immer eine Klasseninstance (self, this).
Wenn mit den beiden Objekten A und B arbeiten möchte kann ich entweder
die eine Instance zum aufrufen einer Klassenfunktion und das andere als Paramter verwenden, oder ich benutzt eine Fukntion die beide Objekte als Parameter benutzt.
Beispiel vergleiche zwei Punkte: A.equals(B) oder equals(A,B)
Jetzt bringe ich noch einen Toleranz T in Spiel, in deren Abhängigkeit der Vergleich ausgewertet wird.
Beispiel:
Mir wäre es aber lieber ich würde T ein mal als Klassenvaribele definieren.
Die Funktion fragt diese dann einfach ab. Da T aber nicht wie Math.Pi eine Konstante sein sollen, sondern bei Bedarf geänder werden kann, stehe ich vor einen Problem. Ich möcht T nicht ohne weiteres als global defineren,
da ich sorge habe sie konnte ungewollte geändert werden - wie weit lasse ich mit einer solchen Definition die Hosen im Namensraum runter?
Ich hatte auch schon nach einer Anregung hier im Forum die Definition einer Funktionsvaribalen versucht, die über einer Zugriffsfunktion abgesprochen werden könnte - leider haut das (noch) nicht hin.
Auslagern in eine anderes Klasse oder ein extra Modul wollte ich das ganze nicht, da ich meine diese Funktionen gehören zu der Klasse der Objekte A und B.
Kann mir hier jemand helfen bzw. einen Hinweise in Form einer guten Doku für diese Problematik geben?
Grüße Bernd
Habe (vermutlich) ein Problem mit den Namensräumen von Variablen.
Folgende Problemstellung:
Es gib die zwei Objekte A und B mit ihren Variblen=Attributen der Klasse K. Wenn ich Python bis hierhin richtig verstehe, haben die Klassenfunktionen als estes Attribut immer eine Klasseninstance (self, this).
Wenn mit den beiden Objekten A und B arbeiten möchte kann ich entweder
die eine Instance zum aufrufen einer Klassenfunktion und das andere als Paramter verwenden, oder ich benutzt eine Fukntion die beide Objekte als Parameter benutzt.
Beispiel vergleiche zwei Punkte: A.equals(B) oder equals(A,B)
Jetzt bringe ich noch einen Toleranz T in Spiel, in deren Abhängigkeit der Vergleich ausgewertet wird.
Beispiel:
Code: Alles auswählen
class K:
def equals(self, other,tol): irgendetwas
def equals(x,y,tol): irgendetwas
A.equals(B,T) oder equals(A,B,T)
Die Funktion fragt diese dann einfach ab. Da T aber nicht wie Math.Pi eine Konstante sein sollen, sondern bei Bedarf geänder werden kann, stehe ich vor einen Problem. Ich möcht T nicht ohne weiteres als global defineren,
da ich sorge habe sie konnte ungewollte geändert werden - wie weit lasse ich mit einer solchen Definition die Hosen im Namensraum runter?
Code: Alles auswählen
__Tol=10**-3
def setTol(value): __Tol=value
Code: Alles auswählen
def equals():
if x<=equals.tol: irgendetwas
def setTol(value): equals.tol=value
Kann mir hier jemand helfen bzw. einen Hinweise in Form einer guten Doku für diese Problematik geben?
Grüße Bernd