Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python Objekte & Klassen: Ein praktischer Leitfaden

Python Objekte und Klassen

Dieses Tutorial erkundet Pythons Kern-Features der objektorientierten Programmierung und führt Sie durch Klassen-Erstellung, Instanziierung und Best Practices für robusten Code.

Video: Python Klassen und Objekte

Python Objekte und Klassen

Python ist fundamental objektorientiert. Während prozedurale Programmierung sich auf Funktionen konzentriert, zentriert sich OOP auf Objekte, die Daten und Verhalten bündeln.

Ein Objekt ist ein Bündel von Attributen (Daten) und Methoden (Funktionen). Eine Klasse ist der Bauplan, der die Struktur eines Objekts definiert.

Denken Sie an eine Klasse wie einen Hausbauplan – der Räume, Türen, Fenster beschreibt. Jedes gebaute Haus ist ein Objekt, oder Instanz, die von diesem Bauplan erstellt wurde.

Mehrere Objekte können aus derselben Klasse gebaut werden. Instanziierung ist der Prozess der Erstellung eines Objekts aus einer Klasse.


Eine Klasse in Python definieren

Klassendefinitionen beginnen mit dem class-Schlüsselwort, analog zu Funktionen, die mit def beginnen. Der erste String in einer Klasse ist der Docstring, der eine knappe Beschreibung liefert.

class MeineNeueKlasse:
    '''Dies ist ein Docstring. Ich habe eine neue Klasse erstellt'''
    pass

Die Definition einer Klasse etabliert einen neuen Namespace für ihre Attribute, die Daten oder Methoden sein können. Spezielle Attribute, die mit doppeltem Unterstrich beginnen, wie __doc__, enthalten Metadaten wie den Docstring.

Einmal definiert, wird ein Klassenobjekt erstellt und kann verwendet werden, um auf Attribute zuzugreifen oder neue Objekte zu instanziieren.

class Person:
    "Dies ist eine Personenklasse"
    alter = 10
    def gruss(self):
        print('Hallo')
# Ausgabe: 10
print(Person.alter)
# Ausgabe: <function Person.gruss>
print(Person.gruss)
# Ausgabe: "Dies ist eine Personenklasse"
print(Person.__doc__)

Ausgabe

10 <function Person.gruss at 0x7fc78c6e8160> Dies ist eine Personenklasse

Ein Objekt in Python erstellen

Klassen dienen als Fabriken für Objekte. Die Instanziierung ähnelt einem Funktionsaufruf:

>>> hans = Person()

Das resultierende Objekt hans kann über Punktschreibweise auf Klassenattribute zugreifen. Klassenmethoden werden zu gebundenen Methoden auf der Instanz.

class Person:
    "Dies ist eine Personenklasse"
    alter = 10
    def gruss(self):
        print('Hallo')
# neues Objekt der Person-Klasse erstellen
hans = Person()
# Ausgabe: <function Person.gruss>
print(Person.gruss)
# Ausgabe: <bound method Person.gruss of <__main__.Person object>>
print(hans.gruss)
# Objekte's gruss()-Methode aufrufen
# Ausgabe: Hallo
hans.gruss()

Ausgabe

<function Person.gruss at 0x7fd288e4e160> <bound method Person.gruss of <__main__.Person object at 0x7fd288e9fa30>> Hallo

Beachten Sie den self-Parameter in Methodendefinitionen. Wenn eine Methode auf einer Instanz aufgerufen wird, übergibt Python die Instanz automatisch als erstes Argument, was hans.gruss() ermöglicht, ohne self explizit bereitzustellen.

Konventionell wird self verwendet, obwohl jeder Name syntaktisch gültig ist. Die Einhaltung dieser Konvention verbessert die Lesbarkeit und entspricht Community-Standards.


Konstruktoren in Python

Spezielle Methoden, die mit doppeltem Unterstrich präfixiert sind, erfüllen spezielle Rollen. Die __init__-Methode, die bei der Instanziierung aufgerufen wird, fungiert als Konstruktor und initialisiert den Instanzzustand.

class KomplexeZahl:
    def __init__(self, r=0, i=0):
        self.real = r
        self.imag = i
    def get_daten(self):
        print(f'{self.real}+{self.imag}j')
# Neues KomplexeZahl-Objekt erstellen
num1 = KomplexeZahl(2, 3)
# get_daten()-Methode aufrufen
# Ausgabe: 2+3j
num1.get_daten()
# Ein weiteres KomplexeZahl-Objekt erstellen
# und dynamisches Attribut 'attr' hinzufügen
num2 = KomplexeZahl(5)
num2.attr = 10
# Ausgabe: (5, 0, 10)
print((num2.real, num2.imag, num2.attr))
# Zugriff auf fehlendes Attribut löst Fehler aus
print(num1.attr)

Ausgabe

2+3j (5, 0, 10) Traceback (most recent call last): File "<string>", line 27, in <module> print(num1.attr) AttributeError: 'KomplexeZahl' object has no attribute 'attr'

Dieses Beispiel demonstriert, dass Attribute dynamisch zu einzelnen Instanzen hinzugefügt werden können, ohne andere zu beeinflussen.


Attribute und Objekte löschen

Attribute können mit der del-Anweisung entfernt werden. Das Löschen der Klassenmethode oder des Attributs beeinflusst nachfolgende Aufrufe.

>>> num1 = KomplexeZahl(2,3)
>>> del num1.imag
>>> num1.get_daten()
Traceback (most recent call last):
... AttributeError: 'KomplexeZahl' object has no attribute 'imag'
>>> del KomplexeZahl.get_daten
>>> num1.get_daten()
Traceback (most recent call last):
... AttributeError: 'KomplexeZahl' object has no attribute 'get_daten'

Objekte selbst können gelöscht werden. Das Entfernen der Referenz befreit den Namen; wenn keine anderen Referenzen existieren, wird das Objekt automatisch garbage-collected.

>>> c1 = KomplexeZahl(1,3)
>>> del c1
>>> c1
Traceback (most recent call last):
... NameError: name 'c1' is not defined

In Python wird Speicherverwaltung durch Referenzzählung und einen zyklischen Garbage Collector gehandhabt, was effiziente Ressourcenbereinigung sicherstellt.

Python Objekte & Klassen: Ein praktischer Leitfaden

Python

  1. C# Klassen & Objekte: Fundamente für robustes OOP
  2. C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
  3. C# Partielle Klassen und Methoden verstehen
  4. Versiegelte Klassen und Methoden in C# meistern
  5. C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
  6. C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
  7. Python-Schlüsselwörter & Bezeichner: Reservierte Wörter & Benennungskonventionen meistern
  8. Python-Anweisungen, Einrückung & Kommentare: Klare Anleitung
  9. Verzeichnis- und Dateioperationen in Python meistern
  10. Python benutzerdefinierte Exceptions: Ein praktischer Leitfaden