Hallo
ich habe ein Programm vor mir liegen das Objektorientiert programmiert ist. Jetzt gibt es verschiedene Klassen in verschiedenen files.
1) wird mit from ordner1.class import * diese Datei/Modul importiert ? Schon oder? Oder wie darf ich das verstehen?
2) Es gibt in jedem ordner ein __init__.py file in dem nur eine Zeile steht:
__all__ = ["class"]
also class ist der Klassenname der im selben Ordner steht.
3) ein Aufruf class.class() ist doch wie ein Konstruktor-Aufruf oder?
also in der klasse class muss stehen __init__(self) was der Konstruktor ist oder ?
4) es erscheint mir seltsam dass wenn man in eine datei namens test.py NUR methoden reinschreibt man ganz einfach auf diese Methoden in anderen Klassen so zugreifen kann: test.methode1()
normal?
Danke für eure Hilfe
__init__.py als file ? OO fragen.
Erstmal ein paar Links, die eigentlich alles ausreichend erklären:
http://www.pythonwiki.de/ModulImporte
http://docs.python.org/tut/node8.html
damit man deine Fragen etwas einfacher beantworten kann, poste doch einfach mal die korrekten Pfade ohne Prosa, also z.B. so (vermutet):
/main.py
/ordner1
/ordner1/__init__.py
/ordner1/class.py
denn zB bei 1) kommt es drauf an, wo die datei liegt, in der das statement steht.
3) vermutlich. Das kommt drauf an, was du genau importiert hast.
Wenn das linke class ein Modul ist, und das rechte class die Klasse in diesem Modul, dann ja. Mach dir doch einfach mal eine Console auf, tippe import X und gucke dir an, was X ist.
Das hat mir immer ganz gut geholfen.
4) das sind keine Methoden, sondern Funktionen, vermute ich. Methoden sind Funktionen, die zu klassen/objekten gehören.
http://www.pythonwiki.de/ModulImporte
http://docs.python.org/tut/node8.html
damit man deine Fragen etwas einfacher beantworten kann, poste doch einfach mal die korrekten Pfade ohne Prosa, also z.B. so (vermutet):
/main.py
/ordner1
/ordner1/__init__.py
/ordner1/class.py
denn zB bei 1) kommt es drauf an, wo die datei liegt, in der das statement steht.
3) vermutlich. Das kommt drauf an, was du genau importiert hast.
Wenn das linke class ein Modul ist, und das rechte class die Klasse in diesem Modul, dann ja. Mach dir doch einfach mal eine Console auf, tippe import X und gucke dir an, was X ist.
Das hat mir immer ganz gut geholfen.
4) das sind keine Methoden, sondern Funktionen, vermute ich. Methoden sind Funktionen, die zu klassen/objekten gehören.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Die Seite ist umgezogen, ist nun [wiki]Modul Import[/wiki].keppla hat geschrieben:http://www.pythonwiki.de/ModulImporte
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
danke aber so ganz hab ichs noch nicht verstanden...
ich habe folgendes:
/start.py
/ordner1/module/
start.py ist das start skript
unter dem ordner module befindet sich:
/modul1
/modul2
/modul3
__init__.py
und in der init steht hier __all__=["start"]
jetzt in einem modul steht z.B. module1/
/__init__.py
/iii.py
und in der init steht __all__=["iii"]
kann mir jemand diese struktur erklaeren???
ich habe folgendes:
/start.py
/ordner1/module/
start.py ist das start skript
unter dem ordner module befindet sich:
/modul1
/modul2
/modul3
__init__.py
und in der init steht hier __all__=["start"]
jetzt in einem modul steht z.B. module1/
/__init__.py
/iii.py
und in der init steht __all__=["iii"]
kann mir jemand diese struktur erklaeren???
Verzeichnisse mit einer `__init__.py` nennt man Packages. Die `__ini__.py` macht ein Verzeichnis zu einem Packhage, da muss noch nicht einmal was drin stehen.
Andere Dateien mit der Endung ``*.py`` sind Module.
In einem Modul können sich dann Funktionen und Klassen und andere Modulweit sichtbare Objekte befinden.
Ich weiss nicht ob ich Deine Struktur richtig verstanden habe, bzw. ob Du die richtig wiedergegeben hast. Ich gehe jetzt mal davon aus:
Dann würde alles Zusammen in einem Package mit dem Namen `program` liegen, das ein `start` Modul enthält und ein weiteres Package mit dem Namen `foos`. Dieses wiederum enthält die Packages `foo1` und `foo2` jeweils mit den Modulen `i` und `ii`.
Wenn man ein Package importiert, dann wird der Code in der jeweiligen `__init__.py` ausgeführt.
Den Sinn von der Struktur kann ich allerdings nicht erklären. Für jede Klasse ein eigenes Modul in einem eigenen Package!?
Andere Dateien mit der Endung ``*.py`` sind Module.
In einem Modul können sich dann Funktionen und Klassen und andere Modulweit sichtbare Objekte befinden.
Ich weiss nicht ob ich Deine Struktur richtig verstanden habe, bzw. ob Du die richtig wiedergegeben hast. Ich gehe jetzt mal davon aus:
Code: Alles auswählen
program/
start.py
__ini__.py
foos/
foo1/
i.py
__init__.py
foo2/
ii.py
__init__.py
__init__.py
Dann würde alles Zusammen in einem Package mit dem Namen `program` liegen, das ein `start` Modul enthält und ein weiteres Package mit dem Namen `foos`. Dieses wiederum enthält die Packages `foo1` und `foo2` jeweils mit den Modulen `i` und `ii`.
Wenn man ein Package importiert, dann wird der Code in der jeweiligen `__init__.py` ausgeführt.
Den Sinn von der Struktur kann ich allerdings nicht erklären. Für jede Klasse ein eigenes Modul in einem eigenen Package!?