Beispiel:
class Dog: # The constructor method def __init__(self, name, breed): self.name = name # Attribute self.breed = breed # Method (function in the class) def bark(self): print(f"{self.name} says woof!") # Creating an object of the Dog class dog1 = Dog("Buddy", "Golden Retriever") dog1.bark() # Output: Buddy says woof!
Hier ist Dog eine Klasse (die Blaupause) und dog1 ist ein Objekt, das aus dieser Blaupause erstellt wurde.
Bei der Kapselung geht es darum, Daten sicher zu halten und die Interaktion mit ihnen nur durch kontrollierte Methoden zu ermöglichen. Durch die Verwendung von privaten-Attributen (mit dem Präfix _ oder __) stellen wir sicher, dass nicht direkt auf sie zugegriffen werden kann.
Beispiel:
class BankAccount: def __init__(self, balance): self.__balance = balance # Private attribute def deposit(self, amount): self.__balance += amount def get_balance(self): return self.__balance account = BankAccount(100) account.deposit(50) print(account.get_balance()) # Output: 150
__balance ist privat, daher interagieren wir nur über die Methoden Deposit() und get_balance() damit.
Vererbung ermöglicht einer Klasse (untergeordneten Klasse), Attribute und Methoden von einer anderen Klasse (übergeordneter Klasse) abzuleiten, wodurch die Wiederverwendung von Code ermöglicht und eine natürliche Hierarchie erstellt wird.
Beispiel:
class Animal: def __init__(self, name): self.name = name def make_sound(self): pass class Dog(Animal): def make_sound(self): return "Woof!" class Cat(Animal): def make_sound(self): return "Meow!" dog = Dog("Buddy") cat = Cat("Whiskers") print(dog.make_sound()) # Output: Woof! print(cat.make_sound()) # Output: Meow!
Hier erben Hund und Katze von Tier, was bedeutet, dass sie gemeinsame Eigenschaften und Verhaltensweisen teilen können, aber durch Methodenüberschreibung auch einzigartige Verhaltensweisen aufweisen.
Polymorphismus ermöglicht es Methoden, abhängig vom Objekt, das sie aufruft, eine unterschiedliche Leistung zu erbringen. Dies ist in Fällen wie dem Überschreiben von Methoden in untergeordneten Klassen nützlich, in denen jede Unterklasse ein Verhalten auf ihre eigene Weise implementieren kann.
Beispiel:
class Shape: def area(self): pass class Square(Shape): def __init__(self, side): self.side = side def area(self): return self.side * self.side class Circle(Shape): def __init__(self, radius): self.radius = radius def area(self): return 3.14 * self.radius * self.radius shapes = [Square(4), Circle(3)] for shape in shapes: print(shape.area())
Jede Form berechnet ihre Fläche anders, auch wenn sie denselben Methodennamen haben, nämlich „area()“. Das ist Polymorphismus in Aktion.
Abstraktion konzentriert sich darauf, nur wesentliche Merkmale anzuzeigen und komplexe Details zu verbergen. Dies wird häufig mithilfe von abstrakten Klassen oder Schnittstellen (unter Verwendung des abc-Moduls in Python) erreicht.
Beispiel:
from abc import ABC, abstractmethod class Vehicle(ABC): @abstractmethod def start_engine(self): pass class Car(Vehicle): def start_engine(self): return "Car engine started!" class Motorcycle(Vehicle): def start_engine(self): return "Motorcycle engine started!" car = Car() motorcycle = Motorcycle() print(car.start_engine()) # Output: Car engine started! print(motorcycle.start_engine()) # Output: Motorcycle engine started!
Hier ist Vehicle eine abstrakte Klasse, die start_engine definiert, aber nicht implementiert. Die Klassen „Auto“ und „Motorrad“ bieten spezifische Implementierungen, die es uns ermöglichen, uns nur auf das Verhalten zu konzentrieren, das für jeden Fahrzeugtyp relevant ist.
Durch die Beherrschung dieser OOP-Prinzipien – Kapselung, Vererbung, Polymorphismus und Abstraktion – schreiben Sie nicht nur Code; Sie entwerfen ein ganzes System mit Struktur, Klarheit und Effizienz.
Willkommen im Python-Club der „coolen Architekten“. ??"
Das obige ist der detaillierte Inhalt vonLassen Sie uns anhand realer Beispiele tiefer in die Prinzipien und Konzepte der **objektorientierten Programmierung (OOP)** von Python eintauchen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!