Python - Frage zu Klassen Methoden Objekten?


06.07.2021, 15:51

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 ().

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

DNSxxx 
Fragesteller
 06.07.2021, 15:42

Ok. An dem liegt es aber nicht, weil in echten Code das nicht so ist. Trotzdem danke

0
MrAmazing2  06.07.2021, 15:45
@DNSxxx
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()

1
DNSxxx 
Fragesteller
 06.07.2021, 15:50
@MrAmazing2

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)
0
MrAmazing2  06.07.2021, 15:53
@DNSxxx

Du musst ein Objekt der Klasse erstellen, und die Methoden dann auf dem Objekt aufrufen:

pfad_pruefer = Pfad_pruefen_erstellen(target)

pfad_pruefer.test()

2
DNSxxx 
Fragesteller
 06.07.2021, 15:58
@MrAmazing2

Ok Super. Vielen Dank. Jetzt hab ich es geschnallt.

1
Von Experte MrAmazing2 bestätigt
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.


DNSxxx 
Fragesteller
 06.07.2021, 15:59

Ok Super. Vielen Dank. Jetzt hab ich es geschnallt.

0