if __name__ == '__main__':

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.
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

if __name__ == '__main__':

Beitragvon DER Olf » Sonntag 1. Februar 2004, 07:49

hi!

wenn ich mir scripts von erfahreneren python programmieren angucke sehe ich (z.b. beispiel scripts bei modules wie wxPython,) dass am ende

Code: Alles auswählen

if __name__ == '__main__':
      #anweisungen....


steht. ich habe erst gestern zum ersten mal OO programmiert, d.h. über klassen und deren methoden und was eine instanz ist nachgedacht :oops:...also bitte nicht zu konplizierte antworten... :roll:

dankö

DER Olf
Eric

Don't Panik ;-)

Beitragvon Eric » Sonntag 1. Februar 2004, 09:22

Hi DER Olf!

Diese Zeile hat nichts mit OO zu tun sondern bietet eine einfache Möglichkeit zum Testen von Modulen. Die nachfolgenden Anweisungen werden nur ausgeführt, wenn das aktuelle Modul direkt (sozusagen als Programm) aufgerufen wird. Würde das Modul nur von anderen 'angezogen' werden, würden die Anweisungen nicht ausgeführt.
Ich würde es an Deiner Stelle mal ausprobieren; die Qualität Deiner Module steigt durch solche Selbsttests!

Viel Spaß, Eric
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Sonntag 1. Februar 2004, 09:28

In der Variable __name__ ist der Name des aktuellen Moduls gespeichert. Nur wenn das aktuelle Script das Hauptprogramm ist, ist __name__ == "__main__". Wenn du es importierst, hat es seinen "Orginalnamen":

Code: Alles auswählen

import math
print math.__name__


liefert dann nämlich math. Deswegen kannst du ein Modul schreiben, dass als Programm allein lauffähig ist, aber nicht ausgeführt werden soll, wenn es importiert wird. Dann greift nämlich die IF-Abfrage nicht.
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

Beitragvon DER Olf » Sonntag 1. Februar 2004, 09:38

hey. danke für die genauen antworten!

Wer ist online?

Mitglieder in diesem Forum: __deets__