Unterschied zwischen Modul und Klasse in Python

8

Kann ich einer Variablen im Modul einen Wert zuweisen? Wenn ja, was ist der Unterschied zwischen einer Klasse und einem Modul?

PS: Ich bin ein Java-Typ. Im Falle, wenn es in der Art der Erklärung hilft. Danke.

    
liwevire 03.04.2017, 11:16
quelle

3 Antworten

9
  • Modul :

      

    Ein Modul ist eine Datei, die Python-Definitionen und -Anweisungen enthält.

Wie das Dokument sagt.

Also ein Modul in Python ist einfach eine Möglichkeit, den Code zu organisieren, und es enthält entweder Python-Klassen oder nur Funktionen. Wenn Sie diese Klassen oder Funktionen in Ihrem Projekt benötigen, verwenden Sie nur import sie. Zum Beispiel enthält das math -Modul in Python nur eine Reihe von Funktionen, und Sie nennen nur die benötigten ( math.sin ). Werfen Sie einen Blick auf diese Frage .

Andererseits ist eine Python-Klasse einer Java-Klasse ähnlich, sie ist nur etwas anders strukturiert.

    
Leonardo Chirivì 03.04.2017, 11:33
quelle
5

Es gibt große Unterschiede zwischen Klassen und Modulen in Python.

Klassen sind Blaupausen, mit denen Sie Instanzen mit Attributen und gebundenen Funktionen erstellen können. Klassen unterstützen Vererbung, Metaklassen und Deskriptoren.

Module können nichts davon tun, Module sind im Wesentlichen Singleton-Instanzen einer internen module -Klasse und alle ihre globalen Attribute sind Attribute in der module -Instanz. Sie können diese Attribute nach Bedarf bearbeiten (hinzufügen, entfernen und aktualisieren), berücksichtigen Sie jedoch, dass diese weiterhin den globalen Namespace für den gesamten in diesem Modul definierten Code bilden.

Aus einer Java-Perspektive sind Klassen hier nicht so verschieden. Module können jedoch mehr als nur eine Klasse enthalten; Funktionen und jedes Ergebnis eines anderen Python-Ausdrucks können auch globale Variablen in einem Modul sein.

Also als allgemeine Baseball-Richtlinie:

  • Verwenden Sie Klassen als Blueprints für Objekte, die Ihre Problemdomäne modellieren.
  • Verwenden Sie Module, um Funktionalität in logischen Einheiten zu sammeln.

Speichern Sie die Daten dort, wo sie für Ihre Anwendung sinnvoll sind. Der globale Zustand geht in Module über (und Funktionen und Klassen sind genauso global wie am Anfang geladen). Alles andere geht in andere Datenstrukturen, einschließlich Instanzen von Klassen.

    
Martijn Pieters 03.04.2017 11:54
quelle
0

Kann ich einer Variablen im Modul einen Wert zuweisen?
Kurz gesagt, ja.

Das Konzept von module bezieht sich auf eine einzelne Python-Datei, die importiert werden kann (durch Importieren haben Sie Zugriff auf die in diesem Modul definierten Variablen / Methoden / Klassen).

Es wird häufig zusammen mit dem Konzept package diskutiert, welches ein Ordner mit __init__.py ist. Ein Paket kann Unterpakete oder Module enthalten und gleichzeitig, ähnlich wie Module, Variablen / Methoden / Klassen definieren, die innerhalb seines __init__.py importiert werden sollen.

Der Zweck, Module / Pakete in Python zu haben, ist ähnlich wie in Java: Pakete enthalten und kategorisieren wiederverwendbare Codes, um Namenskonflikte aufzulösen und so weiter.

Außerdem hat Python auch eine eingebaute Klasse namens module , genau wie list , tuple , dict (beachten Sie, dass Python-eingebaute Klassen aus althergebrachten Gründen nicht der CapWords-Namenskonvention folgen). Eine module -Instanz repräsentiert das importierte Modul / Paket.

Wenn Sie die Anweisung import verwenden, um ein Modul (einzelne Python-Datei) oder ein Paket (Ordner mit __init__.py ), normalerweise
, zu importieren 1. Eine neue Instanz von module class wird erstellt 2. Die Klassen / Methoden / Variablen, die Sie in dieser importierten Python-Datei definiert haben, werden als Attribute dieser module Instanz hinzugefügt (wenn es sich um ein Paket handelt, sind dies die in __init__.py definierten Klassen / Methoden / Variablen) hinzugefügt).

Da es sich also nur um eine Instanz der Klasse module handelt, können Sie dem Attribut dieser Instanz und anderen Klasseninstanzoperationen einen Wert zuweisen.

%Vor%

Konsole:

%Vor%     
royl8 14.11.2017 05:47
quelle

Tags und Links