Seite 1 von 1

ausgelagerte Klasse == Modul ??

Verfasst: Dienstag 29. Mai 2007, 12:56
von lordmyder
Hallo,
ich habe nur eine definitions Frage.
Ich habe ein Programm geschrieben, dass aus drei Klassen besteht. Wobei ich jede Klasse in eine eigene Datei geschrieben habe.
Es gibt die Grafik-Klasse, in der ich die beiden anderen importiere.
Ist diese aus der Grafik-Klasse ausgelagerte Klasse ein Modul?
Oder was definiert ein Modul?

Danke schon mal,
Gruß
LordMyder

Verfasst: Dienstag 29. Mai 2007, 13:24
von schlangenbeschwörer
Weigend hat geschrieben:Module sind Dateien, die Definitionen von Klassen, Funktionen, Konstanten sowie direkt ausführbare Python-Anweisungen enthalten können. Der Dateiname endet mit der Extension .py.[...]Bei besonders strikter objektorientierter Programmierung wird manchmal jede Klassendefinition in einem eigenen Modul [...] abgespeichert.
:arrow: Im weiteren Sinne ist jede .py-Datei ein Modul. Im engeren verstehe ich unter einem Modul jedoch nur solche Dateien, die "von selbst nix machen".

Verfasst: Dienstag 29. Mai 2007, 13:36
von lordmyder
Danke für die schnelle Antwort!

Verfasst: Dienstag 29. Mai 2007, 13:37
von CM
Wobei nur Deine "weitere" Definition der offiziellen Definition auch entspricht:
http://docs.python.org/tut/node8.html

Gruß,
Christian

Verfasst: Dienstag 29. Mai 2007, 21:02
von Leonidas
schlangenbeschwörer hat geschrieben:Im weiteren Sinne ist jede .py-Datei ein Modul. Im engeren verstehe ich unter einem Modul jedoch nur solche Dateien, die "von selbst nix machen".
Der weitere Sinn stimmt, der engere Sinn ist Quatsch: jede Python-Datei ist ein Modul. Man kann beispielsweise auch die aktuell ausgeführte Datei in sich selbst importieren. Module können aber auch .pyd-Dateien sein und einige .so-Dateien sind ebenfalls gültige Python-Module. .pyc und .pyo-Dateien sind ebenso Module.

Verfasst: Dienstag 29. Mai 2007, 21:30
von BlackJack
Und man kann natürlich auch noch welche mit `new.module()` erstellen.

Verfasst: Mittwoch 30. Mai 2007, 08:02
von Zap
BlackJack hat geschrieben:Und man kann natürlich auch noch welche mit `new.module()` erstellen.
kannte ich noch nicht, scheint man aber auch nicht mehr zu brauchen... oder doch?
Help on module new:

NAME
new - Create new objects of various types. Deprecated.

FILE
c:\python23\lib\new.py

DESCRIPTION
This module is no longer required except for backward compatibility.
Objects of most types can now be created by calling the type object.

Verfasst: Mittwoch 30. Mai 2007, 09:08
von BlackJack
Hm, das wusste ich noch gar nicht. Also muss man in sauberem, neuen Quelltext wohl auf `types.ModuleType()` zurückgreifen.

Re: ausgelagerte Klasse == Modul ??

Verfasst: Mittwoch 30. Mai 2007, 20:08
von Joghurt
lordmyder hat geschrieben:Wobei ich jede Klasse in eine eigene Datei geschrieben habe.
Lass mich raten: du kommst aus der Java-Ecke, oder? :wink:

Du solltest Klassen nach Funktion in Dateien kopieren, (in der Regel) nicht jede einzeln.