Python, klassen aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Chrisis

Tach leute,

ich bin noch völlig neu im Python geschäft.
Und absolviere momentan ein Praktikum, und habe vollgende Aufgaben bekommen.

1. Über aufruf einer Klasse/ eines Klassenmoduls den ur alt bekannten Text "Hallo Welt" ausgeben!!

2. Über aufruf einer Klasse, dieser direkt einen Wert (z.B."Hallo Welt") zuzuweisen. Und diesen danach aus einer Variable heraus ausgeben lassen.

3. Über aufruf einer Klasse, dieser direkt einen Wert (z.B."Hallo Welt") zuzuweisen. Und diesen danach aus einer Variable heraus verkert herum ausgeben lassen (z.B. "tleW ollaH").

Da ich noch nie zuvor Python vor den Augen hatte, weis weder wie ich eine Klasse richtig erstelle,
Hier ein versuch, aus dem Buch "Einführung in Python":

Code: Alles auswählen

class test:
    def printer(self, text):
        print text
noch weis ich,wie es auch zur Aufgabe gehört, wie ich die Klassen aus der Shell oder der Commandozeile heraus aufrufe :?:

Bitte helft mir!!
Ich hab noch eine Woche dafür Zeit!!

Ps. Sollte ein solches Thread schon irgenwo vorhanden sein, enschuldige ich mich, aber ich hab vorher gesucht und nichts gleiches gefunden(nur Sachen die ich nch nicht kapiere).

Danke im Vorraus
Christian
Chrisis

Wenn ihr mir antwortet, bitte ich darum, dass es etwas erklärt ist!!
BITTE!!BITTE!!BITTE!!BITTE!!BITTE!!BITTE!!BITTE!!BITTE!!BITTE!!

Wenn ihr mir nur den Quellcode schreibt kann ich das ja immer noch nicht!!
und ich möchte schon ganz gerne Kapieren was ich schreibe, allerdings wollen die in der Firma mir nicht helfen("guck erstmal ob du das selber schaffst) und im Internet/in Foren hab ich solch simple Sachen nicht gefunden!! :?

Und nochmal VIELEN DANK im Vorraus
Glamdring
User
Beiträge: 104
Registriert: Sonntag 25. Mai 2003, 20:22
Wohnort: Freiburg i.B.
Kontaktdaten:

Ich versteh die Aufgabe nicht ganz

Soll all das in einem Code oder in drei Codes kommen?
Dies ist ein Platzhalter, er steht am Ende jeder meiner Beiträge! Erst wenn ich einen vernünftigen Text gefunden habe wird sich das ändern!
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Chrisis,

Code: Alles auswählen

import sys

class Text: 
    """ Klasse fuer Objekte die einen Text bekommen und ausgeben """
    def __init__(self, text): 
        """ Objekt initialisieren mit einem String """
        self.mytext = text # Attribut mytext erzeugen und auf text setzen
     
    def printer(self):
        """ Methode um Text ausgeben """
        print self.mytext 

    def rev_printer(self):
        """ gibt den Text umgedreht aus """
        tmp = list(self.mytext) # in liste wandeln
        tmp.reverse() # reihenfolge umdrehen
        res = "".join(tmp) #wieder in String wandeln
        print res

if __name__ == '__main__': # wurde das Script aus der Kommandozeile gestartet?
    if len(sys.argv) == 1: # Anzahl der Argumente ist eins dann keine Parameter
	textobjekt = Text("Hallo Welt!") # Standarttext erzeugen
    else:                  # Argument wurde mit übergeben
	textobjekt = Text("Hallo " + sys.argv[1] + "!") # Argument in Text

    textobjekt.printer()   # Text von textobjekt ausgeben lassen
    textobjekt.rev_printer() # Text umgedreht ausgeben lassen
ich hab jede Zeile kommentiert, wenn Du noch fragen hast, frag :)

speichere den Code als test.py und rufe das Programm mit "python test.py" auf. du kannst auch ein Argument mit übergeben z.B. "python test.py Du"

Weitere Infos zum Einstieg in Python findest Du hier:
http://www.way2python.de/
http://www.freenetpages.co.uk/hp/alan.g ... utcont.htm


Gruß

Dookie
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Nur als Tip:

Ab Python-2.3 kann man Strings auch folgendermaßen umdrehen:

Code: Alles auswählen

>>> x = 'Dies ist ein Test'
>>> y = x[::-1]
>>> y
'tseT nie tsi seiD'
Jörg
Chrisis

Sorry Dookie,
is echt nett, aber ich glaube ich kann damit nich umgehen. :oops:
Ich bekomme diese Fehlermeldung, ob ich es in der Linux Shell ausführe oder unter Windows in der Cmd!


Bild

Aber durch die Kommentare bin ich mit den Begriffen schonmal nen Ganzes stück weiter gekommen!!


Danke nochmal!!!

Chrisis
Chrisis

Sorry mit dem Bild, in der Vorschau hat es funktioniert!!

Er hat mir Diese Fehlermeldung ausgespuckt:

File "C:\Dokumente und Einstellungen\administrator\Desktop\test.py", line 22
textobjekt = Text("Hallo Welt!") # Standarttext erzeugen
^
IndentationError: unindent does not match any outer indentation level
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Hallo!
Die Fehlermeldung als Screenshot ist etwas eigenwillig ;-). Du kannst problemlos aus der Unix-Shell oder dem "DOS-Fenster" unter Windows die Fehlermeldung rauskopieren. Z.B. im "DOS-Fenster": Bereich mit der Maus markieren und dann die Eingabetaste drücken. Dann befindet sich das Markierte in der Zwischenablage.
Chrisis hat geschrieben:IndentationError: unindent does not match any outer indentation level
Bei der Übertragung ins Forum haben die Einrückungen nicht überlebt. Richtig müsste es so aussehen:

Code: Alles auswählen

if __name__ == '__main__': # wurde das Script aus der Kommandozeile gestartet?
    if len(sys.argv) == 1: # Anzahl der Argumente ist eins dann keine Parameter
        textobjekt = Text("Hallo Welt!") # Standarttext erzeugen
    else:                  # Argument wurde mit übergeben
        textobjekt = Text("Hallo " + sys.argv[1] + "!") # Argument in Text

    textobjekt.printer()   # Text von textobjekt ausgeben lassen
    textobjekt.rev_printer() # Text umgedreht ausgeben lassen
Guck dazu mal in Deinem Buch so ab Seite 83. Da steht so das wesentliche zum Thema Blockbildung mit Einrückungen.
Jan
Chrisis

Vielen lieben Dank an alle die mir geholfen haben, allerdings denke ich nicht das, dies meine letzte Frage war!! :lol:


Aber ich denke da kann ich mich ja wiederholt an euch wenden!!

Und nochmal danke auch für die besonders schnelle Hilfe!!

Genug geschleimt!! :wink:

cu
Chrisis
Antworten