Welche Möglichkeiten gibt es auf die Variablen anderer Klassen zuzugreifen ?
Ist es auf dem Weg der Vererbung am einfachsten und "pythonischsten" ? Also sprich eine Basisklasse mit z.B. einer Liste erzeugen und alle anderen Klassen von ihr erben lassen ?
Danke für den Hint,
Gunnar
GELÖST : Auf Variablen anderer Klassen zugreifen
Hm, also in Python kannst du ganz einfach z.B. über den Klassen-Namen auf das Attribut oder die Methode zugreifen.
Es ist nicht erforderlich, ein Objekt zu instanzieren, und darüber das Attribut anzusteuern.
Am einfachsten geht dass, indem du deine Klassen (auf die du zugreifen möchtest) in Module auslagerst, und die <Modulname>.<Klassenname> importierst.
Dann kannst du auf die Attribute und Methoden der Klasse zugreifen.
Einfaches Bsp:
>>Masaru<<
Es ist nicht erforderlich, ein Objekt zu instanzieren, und darüber das Attribut anzusteuern.
Am einfachsten geht dass, indem du deine Klassen (auf die du zugreifen möchtest) in Module auslagerst, und die <Modulname>.<Klassenname> importierst.
Dann kannst du auf die Attribute und Methoden der Klasse zugreifen.
Einfaches Bsp:
Code: Alles auswählen
# folgendes Modul ist ausgedacht!
import tools.StringTools as strTools
text = strTools.sample_string
# sample_string könnte z.B: eben ein Attribut der Klasse StringTools sein
strTools.convert_string_to_list(text)
# Zugriff auf die Methode 'convert_string_to_list der Klasse strTools
Ach entschuldigt, ich meinte etwas in der Richtung:
Wie kann ich Daten zwischen Klassen fliessen lassen ?
z.B. in einer Klasse wird x + y = z errechnet. Die Variablen x und y kommen von einer zweiten Klasse und in einer dritte soll das ganze ausgegeben werden.
Gunnar
Wie kann ich Daten zwischen Klassen fliessen lassen ?
z.B. in einer Klasse wird x + y = z errechnet. Die Variablen x und y kommen von einer zweiten Klasse und in einer dritte soll das ganze ausgegeben werden.
Gunnar
*grübel*
Wie wär's mit Objektinstanzierung aus den Klassen, und dann direkt mit den Objekt-Attributen (Variablen, Methoden) operieren?
Meinst du sowas?
*g* ansonsten stehe ich voll auf dem Schlauch.
Wie wär's mit Objektinstanzierung aus den Klassen, und dann direkt mit den Objekt-Attributen (Variablen, Methoden) operieren?
Code: Alles auswählen
Class WerteContainer(object):
def __init__(self, x, y):
self.x = x
self.y = y
Class BerechnungMethoden(object):
def __init__(self):
pass
def a_plus_b(self, a, b):
ergebnis = a + b
return ergebnis
Class Ausgabe(object):
def __init__(self):
pass
def print_inhalt(self, inhalt):
print inhalt
>>> # Istanzierung der Objekte
>>> werte = WerteContainer(8, 7)
>>> rechner = BerechnungMethoden()
>>> ausgabe = Ausgabe()
>>>
>>> ausgabe.print_inhalt( rechner.a_plus_b(werte.x, werte.y) ) )
15
*g* ansonsten stehe ich voll auf dem Schlauch.
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Code: Alles auswählen
>>> class Spam:
def __init__(self, value):
self.value = value
>>> class Eggs:
def __init__(self):
pass
def check(self, cls):
return cls.value
>>> spam = Spam("spam and eggs")
>>> eggs = Eggs()
>>> eggs.check(spam)
'spam and eggs'
TUFKAB – the user formerly known as blackbird
Klassen sind dazu da um Daten und Funktionen in einem Objekt zusammen zu fassen. Wenn die Daten x und y zusammen gehören und Deine Operation z.B. x+y eine typische Operation auf diesen Daten ist, dann gehört die Methode auch in die Klasse wo x und y Attribute sind.