Objektorientiert in Python

Objektorientiert in Python

Drei Hauptelemente der Objektorientierung

Verkapselung

Es besteht darin, verwandte Daten und Operationen darauf in einem Objekt zu kombinieren und Informationen und Mindestoperationen nach außen offenzulegen. Von den Variablen und Funktionen des Objekts müssen Daten, auf die nicht direkt von außen verwiesen werden muss, und Operationen, die nicht verwendet werden, geschützt und verborgen werden. Schützen bedeutet, diese Klasse nicht zu verwenden oder neu zu schreiben. Dies hält die lose Kopplung zwischen Programmen aufrecht und erleichtert die Wartung. Darüber hinaus ist es möglich, Fehler wie unterschiedliche Typen zu generieren und Daten zu schützen. Dies ist besonders wichtig beim Bau von Großsystemen.

Polymorphismus (Vielfalt)

Dies bedeutet, dass sich dieselbe Funktion oder Variable je nach Datentyp unterschiedlich verhalten kann. Wenn Sie eine Methode erstellen, die dem Typ entspricht, ist das Programm sehr lang.

Erbe

Es soll die Mitglieder und Methoden einer Klasse übernehmen und eine neue untergeordnete Klasse erstellen. Durch das Erben können gemeinsame Teile zusammen wiederverwendet werden. Es gibt eine spezielle Art der Vererbung, nämlich die folgenden beiden Vererbungen.

Abstrakte Klasse

Abstrakte Klassen können nicht instanziiert werden und fungieren nur dann als Programm, wenn sie vererbt werden. Mit abstrakten Klassen können Sie Methoden implementieren und abstrakte Methoden deklarieren. Die deklarierte abstrakte Methode muss im Vererbungsziel implementiert sein.

Schnittstelle

Hier wird kein Programm geschrieben, nur die Methode wird deklariert. Die geerbte Klasse muss diese Methode implementieren. Bei normaler Vererbung und abstrakter Klassenvererbung können nicht mehrere Klassen vererbt werden, Schnittstellen können jedoch mehrere Vererbungen durchführen. Durch Trennen der Schnittstelle können Sie auswählen, ob das Teil geerbt werden soll oder nicht.

Unterschied zwischen abstrakter Klasse und Schnittstelle

Abstrakte Klassen können Methoden implementieren. Die Schnittstelle kann mehrfach vererbt werden. Eine andere Sichtweise ist, dass die abstrakte Klasse intern und die Schnittstelle extern ist. Wenn eine abstrakte Klasse geerbt wird, wird sie dort häufig abgeschlossen, und wenn eine Schnittstelle geerbt wird, wird die Instanz häufig extern verwendet.

In Python

Verkapselung

In Python sind alle Variablen und Methoden öffentlich, sodass sie durch einen Unterstrich gekennzeichnet sind. Variablen und Methoden mit einem Unterstrich am Anfang werden als privat behandelt.


Class ClassName():
    def __init__(self):
        self.public_variable = ‘safe’
        self._private_variable = ‘unsafe’

    def public_method():
        pass

    def _private_method():
        pass

Abstrakte Klasse

In Python wird die Abstract Base Class (ABC) verwendet.


class BaseClassName(metaclass=ABCMeta):
    
    @abstractmethod
    def abst_method_name(self):
        pass
    
    def method_name(self):
        print(self.name)

Geben Sie ABCMeta als Metaklasse an und fügen Sie der Definition der abstrakten Methode einen Dekorator namens @abstractmethod hinzu. Dadurch wird sichergestellt, dass die geerbte Klasse abst_method_name überschreibt.

Schnittstelle

Da Python standardmäßig keine Schnittstelle hat und eine Mehrfachvererbung möglich ist, können Sie nur so etwas wie eine Schnittstelle erstellen. Wenn Sie so etwas machen möchten, definieren Sie die obige abstrakte Klasse ohne Implementierung.

Recommended Posts

Objektorientiert in Python
String-Objektmethoden in Python
Nullobjektvergleich in Python
Quadtree in Python --2
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Integriertes Python-Objekt
Metaanalyse in Python
Unittest in Python
Zwietracht in Python
DCI in Python
Quicksort in Python
nCr in Python
Integriertes Python-Objekt
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Bearbeiten Sie Schriftarten in Python
Singleton-Muster in Python
Dateioperationen in Python
Lesen Sie DXF mit Python
Täglicher AtCoder # 53 in Python
Tastenanschlag in Python
Verwenden Sie config.ini mit Python
Täglicher AtCoder # 33 in Python