Methoden in Python: ein Schlüsselkonzept der objektorientierten Programmierung

Inhalt

Überblick

  • Methoden in Python sind ein entscheidendes Konzept, das man als Programmierer und Data-Science-Profi verstehen sollte..
  • Hier, Wir werden über diese verschiedenen Arten von Methoden in Python sprechen und wie man sie implementiert

Einführung

Python ist eine wunderbare Sprache, aber es kann für einen Anfänger überwältigend sein, es zu meistern. Wie jede gesprochene Sprache, Python erfordert, dass wir zuerst die Grundlagen verstehen, bevor wir mit dem Aufbau vielfältigerer und breiterer Anwendungen im Bereich der Datenwissenschaft beginnen können..

Hier ist die Frage: wenn du deine Grundlagen gut abdeckst, Sie werden Python sehr einfach finden. Es ist jedoch entscheidend, die anfängliche Lernzeit zu verwenden, um sich mit den Funktionen vertraut zu machen, die Python bietet.. Es wird sich auf Dauer wirklich auszahlen!!

arten-von-methoden-in-python-9192148

Python es, Natürlich, eine objektorientierte Programmiersprache (OOP). Dies ist ein weites Konzept und es ist nicht möglich, alles auf einmal zu verstehen.. Eigentlich, Die Beherrschung der objektorientierten Programmierung kann mehrere Monate oder sogar Jahre dauern. Es hängt ganz von Ihrem Verständnis ab. Ich empfehle dringend, zuerst meinen vorherigen Artikel über die 'Grundlagen der objektorientierten Programmierung' zu lesen..

Dann, in diesem speziellen Artikel, Ich werde den Methodenbegriff in der objektorientierten Programmierung weiter ausbauen. Wir werden über die verschiedenen Arten von Methoden in Python sprechen. Da Python-Methoden manchmal verwirrend sein können, wenn Sie neu bei OOP sind, In diesem Artikel werde ich Methoden in Python und ihre Typen im Detail behandeln. Und dann werden wir die Anwendungsfälle dieser Methoden sehen.

Aber warte, Was sind Python-Methoden?? Gut, Lass uns loslegen und entdecken!

Wenn Sie Python noch nicht kennen, das solltest du überprüfen Kostenloser Python-Kurs das Ihnen alles beibringt, was Sie für den Einstieg in die Welt der Data Science benötigen.

Inhaltsverzeichnis

  • Was sind die Methoden in Python??
  • Arten von Methoden in Python
    • Instanzmethoden
    • Klassenmethoden
    • Statische Methoden
  • Wann sollte man welche Art von Python-Methode verwenden??

Was sind die Methoden in Python??

Die große Frage!

In der objektorientierten Programmierung, wir haben objekte (Trommelwirbel, bitte). Diese Objekte bestehen aus Eigenschaften und Verhalten. Was ist mehr, Objekteigenschaften werden durch Attribute und Verhalten definiert durch Methoden. Diese Methoden sind innerhalb einer Klasse definiert. Diese Methoden sind das wiederverwendbare Code-Snippet, das aufgerufen werden kann / Aufruf an beliebiger Stelle im Programm.

Python bietet mehrere Arten dieser Methoden. Diese sind entscheidend, um ein effizienter Programmierer zu werden und, Folglich, sind für einen Data-Science-Profi nützlich.

Arten von Methoden in Python

Grundsätzlich, Es gibt drei Arten von Methoden in Python:

  • Instanzmethode
  • Klassenmethode
  • Statische Methode

Lassen Sie uns über jede Methode im Detail sprechen.

Instanzmethoden

Der Zweck von Instanzmethoden besteht darin, Instanzen festzulegen oder aufzuschlüsseln (Objekte), und deshalb werden sie als Instanzmethoden bezeichnet. Sie sind die gebräuchlichste Art von Methode, die in einer Python-Klasse verwendet wird.

Sie haben einen Standardparameter: man selbst, was auf eine Instanz der Klasse zeigt. Das muss man aber nicht die ganze Zeit durchmachen. Sie können den Namen dieses Parameters ändern, aber du hältst dich besser an Konventionen, nämlich man selbst.

Jede Methode, die Sie innerhalb einer Klasse erstellen, ist eine Instanzmethode, es sei denn, Sie geben Python anders an. Sehen wir uns an, wie Sie eine Instanzmethode erstellen:

Klasse Meine_Klasse:
  def Instanz_Methode(selbst):
    Rückkehr "Dies ist eine Instanzmethode."

So einfach ist das!

So rufen Sie eine Instanzmethode auf, muss ein Objekt erstellen / Klasseninstanz. Mit Hilfe dieses Objekts, kann auf jede Methode der Klasse zugreifen.

obj = My_class()
obj.instance_method()

screenshot-from-2020-10-19-10-03-00-3996945

Wenn die Instanzmethode aufgerufen wird, Python ersetzt die man selbst Argument mit dem Instanzobjekt, obj. Aus diesem Grund müssen wir beim Definieren der Instanzmethoden einen Standardparameter hinzufügen. Beachten Sie, dass wenn Instanz_Methode () benannt, muss nicht von selbst passieren. Python erledigt das für dich.

Zusammen mit dem Standardparameter self, Sie können auch andere Parameter Ihrer Wahl hinzufügen:

Klasse Meine_Klasse:

  def Instanz_Methode(selbst, ein):
    zurück f"Dies ist eine Instanzmethode mit einem Parameter a = {ein}."

Wir haben einen zusätzlichen Parameter “ein” hier. Jetzt erstellen wir das Klassenobjekt und rufen diese Instanzmethode auf:

obj = My_class()
obj.instance_method(10)

screenshot-from-2020-10-19-10-05-07-6742157

Nochmal, du kannst sehen, dass wir nicht an 'selbst' vorbeigekommen sind’ als Argument, Python macht es für uns. Aber es gibt noch andere Argumente, die erwähnt werden müssen, in diesem Fall, es ist nur einer. Wir haben also bestanden 10 als Wert von “ein”.

Sie können verwenden “selbst” innerhalb einer Instanzmethode, um auf die anderen Attribute und Methoden derselben Klasse zuzugreifen:

Klasse Meine_Klasse:

  def __init__(selbst, ein, B):
    selbst.a = a
    selbst.b = b

  def Instanz_Methode(selbst):
    zurück f"Dies ist die Instanzmethode und kann auf die Variablen a = . zugreifen {selbst.a} und
 b = {selbst.b} mit Hilfe des Selbst."

Notiz als die __init __ Methode () ist eine spezielle Methode, die als bekannt ist Konstrukteur. Diese Methode wird aufgerufen, wenn aus der Klasse ein Objekt erstellt wird und ermöglicht es der Klasse, die Attribute einer Klasse zu initialisieren.

obj = My_class(2,4)
obj.instance_method()

screenshot-from-2020-10-19-10-06-26-6642977

Versuchen wir diesen Code im Live-Encoding-Fenster unten.

Mit Hilfe des Keywords "self" self.a und self.b, wir haben auf die Variablen zugegriffen, die in der Methode __init __ vorhanden sind () der gleichen Klasse.

Zusammen mit den Objekten einer Klasse, eine Instanzmethode kann mit Hilfe von . auf die Klasse selbst zugreifen ich .__ klasse__ Attribut. Mal sehen wie:

Klasse Meine_Klasse():

  def Instanz_Methode(selbst):
    drucken("Hallo! von %s" % selbst.__klasse__.__name__)

obj = My_class()
obj.instance_method()

screenshot-from-2020-10-19-10-08-29-4298856

Das Attribut self .__ class __.__ name__ gibt den Namen der Klasse zurück, mit der die Klasseninstanz verknüpft ist (selbst).

2. Klassenmethoden

Der Zweck der Klassenmethoden besteht darin, die Details festzulegen oder abzurufen (Zustand) der Klasse. Deshalb werden sie als Klassenmethoden bezeichnet. Sie können nicht auf bestimmte Instanzdaten zugreifen oder diese ändern.. Sie sind eher an die Klasse als an ihre Objekte gebunden. Zwei wichtige Dinge über Klassenmethoden:

  • So definieren Sie eine Klassenmethode, Sie müssen mit Hilfe des @classmethod-Dekorators angeben, dass es sich um eine Klassenmethode handelt
  • Klassenmethoden nehmen auch einen Standardparameter an: cls, das weist auf die klasse hin. Nochmal, dies ist nicht erforderlich, um den Standardparameter zu benennen “cls”. Aber es ist immer besser, sich an die Konventionen zu halten

Sehen wir uns nun an, wie Sie Klassenmethoden erstellen:

Klasse Meine_Klasse:

  @classmethod
  def class_method(cls):
    Rückkehr "Dies ist eine Klassenmethode."

So einfach ist das!

Wie ich bereits gesagt habe, mit Hilfe der Klasseninstanz, kann auf jede Methode zugreifen. Also werden wir auch diese My_class instanziieren und versuchen, diese class_method aufzurufen ():

obj = My_class()
obj.class_method()

screenshot-from-2020-10-19-10-09-19-4759548

Das funktioniert auch!! Wir können mit Hilfe einer Instanz auf die Methoden der Klasse zugreifen / Klassenobjekt. Aber wir können direkt auf die Methoden der Klasse zugreifen, ohne eine Instanz oder ein Objekt der Klasse zu erstellen. Mal sehen wie:

screenshot-from-2020-10-19-10-09-19-4759548

Ohne die Klasse zu instanziieren, Sie können die Klassenmethode mit aufrufen – Cclass_name.method_name ().

Dies ist jedoch mit den Instanzmethoden nicht möglich, bei denen wir die Klasse instanziieren müssen, um die Instanzmethoden aufzurufen. Mal sehen, was passiert, wenn wir versuchen, die Instanzmethode direkt aufzurufen:

My_class.instance_method()

screenshot-from-2020-10-19-10-11-15-9970810

Wir haben einen Fehler, der angibt, dass ein Positionsargument fehlt: “mich”. Und es ist offensichtlich, weil Instanzmethoden eine Instanz der Klasse als Standardparameter akzeptieren. Und es liefert keine Instanz als Argument. Obwohl dies den Objektnamen als Argument ignorieren kann:

My_class.instance_method(obj)

screenshot-from-2020-10-19-10-03-00-3996945

Beeindruckend!

3. Statische Methoden

Statische Methoden können nicht auf Klassendaten zugreifen. Mit anderen Worten, sie müssen nicht auf die Klassendaten zugreifen. Sie sind autark und können alleine arbeiten. Da sie an keine Klassenattribute angehängt sind, Instanzstatus oder Klassenstatus kann nicht abgerufen oder festgelegt werden.

So definieren Sie eine statische Methode, wir können den @staticmethod-Dekorator verwenden (ähnlich verwenden wir den @classmethod-Dekorator). Im Gegensatz zu Instanz- und Klassenmethoden, Wir müssen keine speziellen oder Standardparameter übergeben. Schauen wir uns die Umsetzung an:

Klasse Meine_Klasse:

  @statische Methode
  def statische_methode():
    Rückkehr "Dies ist eine statische Methode."

Und fertig!

Beachten Sie, dass wir in diesem Fall keine Standardparameter haben. jedoch, Wie nennen wir statische Methoden?? Nochmal, wir können sie mit dem Objekt aufrufen / Klasseninstanz wie:

obj = My_class()
obj.static_method()

screenshot-from-2020-10-19-10-13-22-4953073

Und wir können statische Methoden direkt aufrufen, ohne ein Objekt zu erstellen / Klasseninstanz:

screenshot-from-2020-10-19-10-13-22-4953073

Sie werden vielleicht feststellen, dass die Ausgabe bei beiden Aufrufarten von statischen Methoden gleich ist.

Hier ist eine Zusammenfassung der Erklärung, die wir gesehen haben:

    • Eine Instanzmethode kennt ihre Instanz (und daraus, seine Klasse)
    • Eine Klassenmethode kennt ihre Klasse
    • Eine statische Methode kennt ihre Klasse oder Instanz nicht

Wann welche Python-Methode verwendet werden soll?

Instanzmethoden sind die am häufigsten verwendeten Methoden. Sogar dann, Es ist schwer zu sagen, wann Sie Klassenmethoden oder statische Methoden verwenden können. Die folgende Erklärung wird Ihre Neugier befriedigen:

Klassenmethode – Die häufigste Verwendung von Klassenmethoden ist die Erstellung von Fabrikmethoden. Factory-Methoden sind die Methoden, die ein Klassenobjekt zurückgeben (wie ein Baumeister) für verschiedene Anwendungsfälle. Lassen Sie uns dies anhand des angegebenen Beispiels verstehen:

ab DatumZeit Importdatum

Klasse Hund:
  def __init__(selbst, Name, Alter):
    self.name = name
    selbst.Alter = Alter

# eine Klassenmethode zum Erstellen eines Dog-Objekts mit Geburtsjahr.
  @classmethod
  def Jahr(cls, Name, Jahr):
    zurück cls(Name, Datum Heute().Jahr - Jahr)

Hier, Wie du siehst, die Klassenmethode ändert den Zustand der Klasse. Wenn wir das Geburtsjahr eines Hundes anstelle des Alters haben, dann können wir mit Hilfe dieser Methode die Attribute der Klasse ändern.

Lass uns das überprüfen:

Hund1 = Hund('Bruno', 1)
Hund1.name , Hund1.Alter
screenshot-from-2020-10-19-10-14-14-4460244

Hier haben wir ein Objekt der Klasse konstruiert. Dies nimmt den Namen und das Alter von zwei Parametern an. Durch Drucken der Attribute der Klasse erhalten wir Bruno und 1 als Ausweg, Was waren die Werte, die wir geliefert haben.

Hund2 = Hund.Jahr('Dobby', 2017)
Hund2.name , Hund2.Alter

screenshot-from-2020-10-19-10-15-07-9260481

Hier, wir haben ein weiteres Objekt der Klasse Dog mit der Methode der Klasse gebaut. Jahr(). Die Jahresmethode () Nehmen Sie die Klasse Person als ersten Parameter cls und gibt den Konstruktor durch Aufrufen zurück cls (Name, fecha.heute (). Jahr – Jahr), was äquivalent zu ist Hund (Name, das heutige datum (). Jahr – Jahr).

Wie Sie sehen können, indem Sie den Attributnamen und das Alter ausdrucken, wir haben den von uns angegebenen Namen und das Alter vom Geburtsjahr mit der Klassenmethode umgerechnet.

Statische Methode – Sie werden verwendet, um Dienstprogrammfunktionen zu erstellen. Um routinemäßige Programmieraufgaben auszuführen, wir verwenden Utility-Funktionen. Ein einfaches Beispiel könnte sein:

Klassenrechner:
 
  @statische Methode
  auf jeden Fall hinzufügen(x, Ja):
    Rückgabe x + und

drucken('Die Summe ist:', Rechner.add(15, 10))

screenshot-from-2020-10-19-10-15-47-8126031

Sie sehen, der Anwendungsfall dieser statischen Methode ist sehr klar, Addieren der beiden als Parameter angegebenen Zahlen. Immer wenn ich zwei Zahlen hinzufügen muss, Sie können diese Methode direkt aufrufen, ohne sich um die Konstruktion des Objekts kümmern zu müssen.

Abschließende Anmerkungen

In diesem Artikel, wir haben Python-Methoden kennengelernt, die Arten von Methoden und wir haben gesehen, wie jede Methode implementiert wird.

Ich empfehle Ihnen, diese Ressourcen zur objektorientierten Programmierung zu lesen:

Lassen Sie es mich im Kommentarbereich unten wissen, wenn Sie Fragen oder Kommentare haben. Viel Spaß beim Lernen!

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.