2017-06-08 5 views
0

Python hat ein Modul namens "os". Es hat auch ein anderes Modul namens "os.path", das unter "os" kategorisiert ist.Wie definiert man ein Submodul in Python?

Ich kann "os.path" Methoden verwenden, auch wenn nur das Modul "os" importieren.

import os 

print(os.path.join("sdfs","x")) 

Ich frage mich, wie kann ich ein Sub-Modul so definieren?

+0

In Ihrem Modul definieren '__init __ py' innerhalb jeden Verzeichnisses, das Sie Submodul konvertieren wollen.. –

+0

'os.py' ist ein Dateimodul, aber' path' muss nur eine Variable in dieser Datei sein –

Antwort

2

Das ist die __init__.py ‚Magie‘ des os Modul - es importiert seine Submodul path zu seinem Namensraum, im Wesentlichen Ihnen eine Möglichkeit zu geben, die letztere sogar zugreifen, wenn Sie nur os importieren.

os 
|- path 
    |- __init.__.py # 2 
|- __init__.py  # 1 

Die erste __init__.py (# 1) hat im Wesentlichen import .path so, wann immer Sie gerade os importieren, es path in seinem Namensraum importiert, und deshalb können Sie es als os.path zugreifen.

(Hinweis: Dies ist nicht genau der Fall mit dem os Modul, aber das ist, wie es im Wesentlichen erreichen zu)

3

Mit dieser Struktur:

/ Package 
├── __init__.py 
├── file.py 
│ 
├─┐ subpackage 
│ ├── __init__.py 
│ └── file.py 
│ 
└─┐ subpackage2 
    ├── __init__.py 
    └── file.py 

Hinweis jeder subpackage seine eigene __init__.py Datei hat. Dies wird Package.subpackage verhalten sich wie os.path, Import sprechen (wenn Sie nicht .subpackage unter der Haupt __init__ Datei von Package importieren).

+0

Ich konnte es nicht verstehen. Wie sollte meine Paketstruktur aussehen? Ist "/ Package" der Name des "os"? – amone

+0

@amone 'package' ist der Name Ihres Moduls (oder in dieser Art von Modul, besser' Paket' genannt) – Uriel

Verwandte Themen