Seite 1 von 1

ein paket bilden, wie richtig

Verfasst: Samstag 5. November 2022, 18:30
von blutigeranfaenger
Hallo zusammen,
mir ist nicht so ganz klar, wie das mit dem Bilden eines eigenen Paketes funktioniert.
Ich habe einen Ordner erstellt, der heißt "pakettest".
Dort gibt es eine Datei __init__.py und eine weitere, die heißt defs.py, da sind verschiedene Funktionen definiert:

Code: Alles auswählen

#!/usr/bin/env python3
def multipliziers(a, b):
    return a*b

def geteilt(a, b):
    return round(a/b,2)

def hoch(a, b):
    return a**b
In der __init_datei__ steht:

Code: Alles auswählen

from .defs import multipliziers,geteilt,hoch
Ich kann das Paket nun laden und kann auch auf die funktionen zugreifen:

Code: Alles auswählen

import pakettest
 pakettest.defs.multipliziers(3,4)
Ich hätte nur gerne, dass alles was in defs.py steht automatisch geladen wird und ich hätte gerne, dass ich eingeben kann:

Code: Alles auswählen

import pakettest
pakettest.multipliziers(3,4)
Mir ist leider nicht klar, was nun in __init__.py stehen muss, damit das klappt.
Vielen Dank für Eure Hilfe!

Re: ein paket bilden, wie richtig

Verfasst: Samstag 5. November 2022, 18:49
von Sirius3
Das, was jetzt in __init__.py steht, reicht.

Re: ein paket bilden, wie richtig

Verfasst: Samstag 5. November 2022, 18:59
von blutigeranfaenger
Stimmt, hätte ich nicht gedacht!
Gibt es auch die Möglichkeit, automatisch alle Funktionen auf einmal zu laden oder müssen die alle einzeln aufgezählt werden?

Re: ein paket bilden, wie richtig

Verfasst: Sonntag 6. November 2022, 00:28
von __blackjack__
Die sollten alle einzeln aufgezählt werden, denn spätestens wenn mal jemand wissen möchte was da alles definiert wird und in das Modul rein schaut, ist der froh wenn das da auch tatsächlich steht und nicht noch mal in einem anderen Modul.

Wobei man den Paketinhalt auch in die `__init__.py` schreiben kann statt in eine weitere Datei. Andererseits reicht dann auch ein Modul. Paket macht erst bei mehreren Modulen Sinn. Und dann sollte auch nicht alles was in den Modulen steht auch über das Paket verfügbar sein, weil sich dann doch schon die Frage stellt warum das überhaupt alles aufgeteilt ist, wenn es dann doch wieder zusammengekippt wird.