Python -Kapselung

Python -Kapselung

Einführung

Die Kapselung ist einer der grundlegenden Aspekte der objektorientierten Programmierung. Es ermöglicht den Programmierern eine bessere Kontrolle darüber, wie die Daten in ihren Programmen fließt, und schützt diese Daten. Die Kapselung macht auch Objekte zu autarkeren und unabhängig funktionierenden Teilen.

Das Konzept der Kapselung baut auf dem auf, was Sie in den letzten beiden Leitfäden mit Klassen und Konstruktoren getan haben. Konstruktoren werden normalerweise normalerweise in enger Verbindung mit der Einkapselung verwendet und helfen tatsächlich dazu, die Kapselung nahtlos funktionieren zu lassen.

Zugriffsmodifikatoren

Bevor Sie die Kapselung nutzen können, müssen Sie verstehen, wie Python den Zugriff auf die in Variablen und Methoden gespeicherten Daten einschränkt.

Python hat unterschiedliche Einschränkungen, die steuern, wie auf Daten zugegriffen werden können und von wo aus. Variablen und Methoden können öffentlich, privat oder geschützt sein. Diese Bezeichnungen erfolgen durch die Anzahl der Unterstriche vor der Variablen oder Methode.

Öffentlich

Jede Variable und Methode, die Sie bisher mit Ausnahme der Konstruktoren gesehen haben, war öffentlich. Öffentliche Variablen und Methoden können frei modifiziert werden und von überall in innerhalb oder außerhalb der Klasse geleitet werden. Verwenden Sie keine Unterstriche, um eine öffentliche Variable oder Methode zu erstellen.

Privatgelände

Die private Bezeichnung ermöglicht es nur, dass eine Variable oder Methode innerhalb ihrer eigenen Klasse oder ihres Objekts zugegriffen wird. Sie können den Wert einer privaten Variablen von außerhalb einer Klasse nicht ändern. Private Variablen und Methoden gehen von zwei Unterstrichen voraus. Schauen Sie sich das Beispiel unten an.

__make = 'Dodge'

Versuchen Sie, diese Klasse von früher zu verwenden. Stellen Sie die Variablen im Konstruktor auf privat ein. Versuchen Sie dann, eine der Variablen zu drucken, nachdem ein Objekt instanziiert wurde.

Klassenauto (Objekt): def __init __ (self, make = 'ford', model = 'Pinto', Jahr = '1971', Kilometerleistung = '253812', color = 'orange'): self.__make = selbst machen.__model = Modell Selbst.__year = Jahr selbst.__mileage = Kilometer Selbst.__color = color Def Move_forward (Selbst, Geschwindigkeit): Druck ("Ihr %s bewegt sich bei %s" %(Selbst.__model, Geschwindigkeit)) def move_backward (Selbst, Geschwindigkeit): Druck ("Rückwärtsbewegung bei % s" % Geschwindigkeit) mycar = car () drucken (mycar.__Modell) 

Sie erhalten eine Fehlermeldung, die besagt, dass die Variable nicht vorhanden ist. Dies liegt daran, dass diese Variable privat ist. Versuchen Sie nun, das auszuführen Move_forward Methode.

mein Auto.Move_forward

Alles funktioniert gut. Das liegt daran, dass auf die Variable mit einer Methode innerhalb der Klasse zugegriffen wird, nicht extern.

Hier gibt es einen Haken. Python behandelt nicht genau geschützte Variablen sowie andere objektorientierte Sprachen. Anstatt Variablen tatsächlich zu schützen, ändert es den Namen des Interpreters in den Namen des Interpreters. Dies ermöglicht verschiedene Kopien der Variablen, die erstellt und existieren können. Versuchen Sie, eine der geschützten Variablen in Ihrem zu ändern mein Auto Objekt und ausdrucken.

mein Auto.__model = 'Mustang' Print (MyCar.__Modell) 

Jetzt scheint es zu funktionieren, aber was Sie ausgedruckt haben, ist eine seltsame Kopie der geschützten Variablen. Versuchen Sie es mit dem Move_forward Methode wieder.

mein Auto.Move_forward

Es druckte den ursprünglichen Wert von aus __Modell. Die Variablen existieren unabhängig. Sie können dies weiter veranschaulichen, indem Sie das Objekt als Wörterbuch ausdrucken. Sie werden zwei verschiedene Variablen sehen.

Druck (Mycar.__dict__)

Geschützt

Geschützte Variablen und Methoden sind den privaten sehr ähnlich. Sie werden wahrscheinlich nicht sehr oft geschützte Variablen oder Methoden verwenden, aber es lohnt sich immer noch zu wissen, was sie sind. Eine geschützte Variable kann nur von einer eigenen Klasse und allen Klassen zugegriffen werden, die daraus abgeleitet sind. Das ist eher ein Thema für später, aber wissen Sie nur, dass geschützte Variablen, wenn Sie eine Klasse als Grundlage für eine andere verwenden, eine gute Option sein können. Geschützte Variablen beginnen mit einem einzigen Unterstrich.

Was ist Kapselung

Jetzt, da Sie wissen, wie Zugangsmodifikatoren funktionieren, wird dieser nächste Teil ziemlich offensichtlich erscheinen. Einkapselung ist der Prozess der Verwendung privater Variablen innerhalb des Klassen, um eine unbeabsichtigte oder potenziell böswillige Änderung von Daten zu verhindern. Durch die Eindämmung und Schutz von Variablen innerhalb einer Klasse ermöglicht es der Klasse und den Objekten, die sie erstellt haben.

Durch Kapselungsvariablen und bestimmte Methoden können nur durch die von der Klasse selbst bezeichneten Schnittstellen interagiert werden.

Setzer und Getters

Die Schnittstellen, die für die Interaktion mit eingekapselten Variablen verwendet werden. Da Methoden innerhalb einer Klasse oder eines Objekts vorhanden sind, können sie auf private Variablen zugreifen und diese ändern, während Sie dies nicht von außerhalb der Klasse tun können. Wenn Sie Ihre instanziiert haben mein Auto Objekt Sie haben seinen Konstruktor im Wesentlichen als anfängliche Settermethode verwendet.

Versuchen Sie, eine Reihe von Methoden zu schreiben, um den Wert eines der der Wert zu setzen und zu erhalten mein Auto Variablen.

Def set_model (self, new_model): self.__model = new_model def get_model (self): selbst zurückgeben.__Modell 

Es mag eine Menge zusätzlicher Arbeit erscheinen, aber es ist wirklich nicht schwer. Im Allgemeinen sollten Sie Ihre Klassen so strukturieren und mit Klassenvariablen arbeiten.

Gedanken schließen

Die Kapselung ist ein wesentlicher Bestandteil der objektorientierten Programmierung. Es ist ein großer Teil dessen, was Objekte in der Programmierung eher wie physische Objekte in der realen Welt ausführen lassen. Es dient auch dazu, die in Ihren Objekten gespeicherten Daten zu schützen, und bietet Steuerung und Konventionen dafür, wie Sie den Datenfluss in und aus den Klassen abwickeln sollten.

Übungen

  1. Machen Sie alle Variablen in der Auto Klasse privat.
  2. Versuchen Sie, einen von außerhalb der Klasse zu drucken.
  3. Modifiziere den Move_forward Methode zur Verwendung der privaten Variablen Modell, und nennen Sie es.
  4. Erstellen Sie eine Settermethode für eine der Variablen.
  5. Verwenden Sie die Setter -Methode, die Sie erstellt haben, um den Wert einer Variablen zu ändern.
  6. Erstellen Sie eine Getter -Methode für dieselbe Variable wie die Setter -Methode.
  7. Verwenden Sie Ihre Getter -Methode, um auf diese Variable zuzugreifen und auszudrucken.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • So erstellen Sie eine Tkinter -Anwendung mithilfe eines objektorientierten…
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Mastering -Bash -Skriptschleifen beherrschen
  • Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen
  • Dinge zu installieren auf Ubuntu 22.04
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Ubuntu 20.04 Leitfaden
  • Grundlagen der Computermathematik: Binär, Dezimal, hexadezimal, Oktal