Seite 1 von 1

Zugriff auf __init__.py in Packages

Verfasst: Mittwoch 2. Juni 2004, 12:27
von leoel
Hallo!

Habe testhalber mal ein eigenes Package erstellt (unter site-packages ein Unterverzeichnis) und ein entsprechendes __init__.py file erstellt, damit das ganze auch als Package erkenntlich ist. Ich hab mir so angeschaut, was in diesen Files bei anderen Packages steht, ist oft leer, manchmal stehen Config-Einstellunge o.ä drinnen.

Beispiel:

Struktur:
site-packages
|- LeoPackage
| ==> __init__.py
| ==> LeoPack.py

LeoPack.py enthält die Klassendefinition für die Klasse LeoPack
__init__.py enthält nur folgenden Code:

Code: Alles auswählen

 __version = '0.0.1'
Wenn ich nun in einem Script folgendes schreibe

test_package.py:

Code: Alles auswählen

import LeoPackage
print LeoPackage.__version
dann funktioniert das wunderbar

Allerdings kann ich nicht von der Klasse LeoPack
auf die Variable __version aus dem __init__.py
zugreifen, selbst wenn ich vor der Klasse
folgenden import mache:

Code: Alles auswählen

import LeoPackage
geht das nicht. Ich bekomme immer nur die Fehlermeldung (wenn ich in der Klasse LeoPack drauf zugreifen will (LeoPackage.__version) dass er das nicht kennt.

Weiss jemand bescheid, wie ich das lösen kann?

Danke, Leo[/code]

Verfasst: Mittwoch 2. Juni 2004, 15:37
von Milan
Hi. Das wird so auch nicht gehen. Schließlich ist LeoPackage.__version ja auch eine Ebene höher als LeoPackage.LeoPack.LeoPack ... auf unsaubere Art und Weise könntest du das hier machen:

Code: Alles auswählen

from __init__ import __version
wie es sauber geht weiß ich allerdings nicht...

Verfasst: Donnerstag 3. Juni 2004, 11:48
von leoel
Hallo Milan!

Ich dachte immer, man kann nur Files importieren, und nicht
einzelne Objekte aus Files...

lg Leo

Verfasst: Donnerstag 3. Juni 2004, 12:04
von Milan
leoel hat geschrieben:Ich dachte immer, man kann nur Files importieren, und nicht einzelne Objekte aus Files...
Nö. Kannste hier nachschauen: http://docs.python.org/ref/import.html