Python - Frage zu Klassen Methoden Objekten?
Hallo,
Ich habe eine kleines Problem mit Klassen bzw. dessen Objekten. Ich zeige mein Problem anhand eines kleinen Beispiels:
Initialisierung der Klasse:
class Test:
def __init__(self, test_objekt):
self.test-objekt = test_objekt
def test_methode(self)
print(self.test_objekt)
Die Klasse hat 3 Methoden die alle das test-objekt verwenden möchten.
Aber mir klappt die Übergabe von dem in __init__ initialisiertem test_objekt nicht auf die Methode. Wie muss ich es schreiben dass das self.test_objekt in der test_methode benutzt werden kann?
Aufruf der Klasse ist im Beispiel übertragen auf mein Problem:
Test.test_methode(test_objekt)
Vielleicht ist es besser einen Teil des echten Beispiels zu verwenden:
Das ist die Klasse wobei ich die Methode test zu testzwecken ergänzt habe
class Pfad_pruefen_erstellen:
def __init__(self, pfad):
self.pfad = pfad
def pruefen_und_erstellen(self):
if not os.path.exists(self.pfad):
print("Pfad wurde erstellt: " + str(self.pfad))
os.makedirs(self.pfad)
elif os.path.exists(self.pfad):
print("Pfad ist vorhanden (muss nicht erstellt werden): " + str(self.pfad))
else:
input("Oh No! Erstellung des Pfad's war nicht möglich, oder ein anderes Problem ist aufgetreten")
exit()
def nur_pruefen(self):
if not os.path.exists(self.pfad):
input('Der Quellpfad ist nicht vorhanden!!! Programm wird beendet!!!')
exit()
def test(self):
print(self.pfad)
Das ist die definietion der Variable (war vorher im Beispiel test_objekt)
target = "/mnt/Laufwerke"
Aufruf der Klasse im Script:
Pfad_pruefen_erstellen.test(target)
2 Antworten
Ich bezweifle, dass Variablennamen ein Minus enthalten dürfen ... Wie soll der Interpreter das denn von einem echten Minus unterscheiden können..
Benenn „test-objekt“ um zu „test_object“, dann sollte es klappen.
Test.test_methode(test_objekt)
Der Aufruf hier passt auch nicht. Du musst ein Objekt deiner Klasse erstellen und die Methode dann beim Objekt aufrufen. Ausserdem erwartet die test_methode keine Parameter, also einfach ().
Test.test_methode(test-objekt)
Warum übergibst du hier test-object? Wo hast du das überhaupt her? Die Methode will keine Parameter. self musst du nicht übergeben, das macht Python automatisch.
Ruf die Methode so auf:
test.test_methode()
Das test_objekt ist eine Variable die vorher definiert wurde. Die möchte in der Klasse bearbeiten:
Vielleicht ist es besser einen Teil des echten Beispiels zu verwenden:
Das ist die Klasse wobei ich die Methode test zu testzwecken ergänzt habe
class Pfad_pruefen_erstellen:
def __init__(self, pfad):
self.pfad = pfad
def pruefen_und_erstellen(self):
if not os.path.exists(self.pfad):
print("Pfad wurde erstellt: " + str(self.pfad))
os.makedirs(self.pfad)
elif os.path.exists(self.pfad):
print("Pfad ist vorhanden (muss nicht erstellt werden): " + str(self.pfad))
else:
input("Oh No! Erstellung des Pfad's war nicht möglich, oder ein anderes Problem ist aufgetreten")
exit()
def nur_pruefen(self):
if not os.path.exists(self.pfad):
input('Der Quellpfad ist nicht vorhanden!!! Programm wird beendet!!!')
exit()
def test(self):
print(self.pfad)
Das ist die definietion der Variable (war vorher im Beispiel test_objekt)
target = "/mnt/Laufwerke"
Aufruf der Klasse im Script:
Pfad_pruefen_erstellen.test(target)
Du musst ein Objekt der Klasse erstellen, und die Methoden dann auf dem Objekt aufrufen:
pfad_pruefer = Pfad_pruefen_erstellen(target)
pfad_pruefer.test()
Ok Super. Vielen Dank. Jetzt hab ich es geschnallt.
someobj=Pfad_pruefen_erstellen('/mnt/Laufwerke')
someobj.pruefen_und_erstellen()
someobj.nur_pruefen()
someobj.test()
Der Konstruktor erzeugt eine Objektinstanz mit der gewünschten Parametrisierung der Attribute. Danach werden die Methoden der Objekinstanz verwendet.
Ok. An dem liegt es aber nicht, weil in echten Code das nicht so ist. Trotzdem danke