Artikelverzeichnis
- Objekt
-
- Was ist ein Objekt?
- Objektorientiert (OOP)
- Klasse
- Der Prozess der Erstellung von Objekten mithilfe von Klassen
- Klassendefinition
- Code-Demo
- Initialisierungsmethoden und Instanzeigenschaften
- Klasseneigenschaften und Klassenmethoden
- Vererbung und Polymorphismus
- Zusammenfassung
- Klassenkapselung
- Eigenschaftsaccessoren und Setter
- Zusammenfassung
- Zusammenfassen
- Empfohlene Python-Boutique-Kolumnen
Objekt
Was ist ein Objekt?
Ein Objekt ist ein Speicherbereich, der der Speicherung von Daten gewidmet ist. In Objekten können verschiedene Daten gespeichert werden, beispielsweise Zahlen, boolesche Werte und Codes. Das Objekt besteht aus drei Teilen:
- Die Kennung des Objekts (id)
- Art des Objekts (Typ)
- Der Wert des Objekts
Objektorientiert (OOP)
Python ist eine objektorientierte Programmiersprache. Die sogenannte objektorientierte Sprache versteht einfach, dass alle Operationen in der Sprache über Objekte ausgeführt werden.
prozedurale Programmiersprache
Prozessorientiert bezieht sich darauf, die Logik unseres Programms nacheinander in Schritte zu zerlegen und das Programm durch Abstrahieren jedes Schritts zu vervollständigen. Beispielsweise kann der Prozess des Schulbesuchs eines Kindes in mehrere Schritte unterteilt werden:
- Mama steht auf
- Mama geht auf die Toilette
- Mama wäscht
- Mama macht Frühstück
- Mutter weckt das Kind
- Kind geht zur Toilette
- Das Kind muss sich waschen
- Kinder essen
- Kind trägt Schultasche zur Schule
Die Idee der prozessorientierten Programmierung zerlegt eine Funktion in kleine Schritte und vervollständigt ein Programm, indem jeder kleine Schritt ausgeführt wird. Diese Programmiermethode ist relativ einfach und entspricht dem menschlichen Denken. Allerdings ist die Wiederverwendbarkeit gering und die Wartung schwierig.
objektorientierte Programmiersprache
Objektorientierte Programmiersprachen konzentrieren sich eher auf Objekte als auf Prozesse. Bei objektorientierten Sprachen ist alles ein Objekt. Beispielsweise wacht die Mutter des Kindes auf und ruft das Kind zur Schule.
Die objektorientierte Programmieridee speichert alle Funktionen einheitlich in entsprechenden Objekten. Um eine bestimmte Funktion zu verwenden, suchen Sie einfach direkt das entsprechende Objekt. Auf diese Weise geschriebener Code ist leicht zu lesen, leicht zu warten und leicht wiederzuverwenden. Allerdings ist diese Methode etwas umständlicher zu schreiben und entspricht nicht der herkömmlichen Denkweise.
Zusammenfassend umfasst das objektorientierte Programmierdenken hauptsächlich zwei Schritte:
- Einen Partner finden
- Beschäftige dich mit Objekten
Klasse
In Python können wir integrierte Objekte (wie int, float, str usw.) verwenden, um Objekte zu erstellen. Da es jedoch nicht alle Anforderungen erfüllen kann, müssen wir häufig einige Objekte anpassen. Einfach ausgedrückt entspricht eine Klasse einer Zeichnung. Wir müssen Objekte basierend auf Klassen im Programm erstellen. Manche Leute sagen auch, dass Objekte Instanzen von Klassen sind. Wenn mehrere Objekte durch eine Klasse erstellt werden, nennen wir diese Objekte eine Klasse von Objekten, genau wie Objekte wie int(), float(), bool(), str(), list(), dict() . Wenn Sie Ihre eigene Klasse definieren, müssen Sie mit einem Großbuchstaben beginnen und die Großschreibung (Pascal-Notation) verwenden, um die Klasse zu benennen.
#定义一个简单的类
class MyClass():
pass
mc = MyClass()
Der Prozess der Erstellung von Objekten mithilfe von Klassen
Verwenden Sie Klassen zum Erstellen von Objekten, genau wie beim Aufrufen einer Funktion. Der Ablauf ist wie folgt:
1. Erstellen Sie eine Variable
2. Erstellen Sie ein neues Objekt im Speicher
3. Weisen Sie der Variablen die ID des Objekts zu
Klassendefinition
Tatsächlich sind Klassen und Objekte Abstraktionen von Dingen im wirklichen Leben oder Inhalten in Programmen. Innerhalb des Codeblocks einer Klasse können wir Variablen und Funktionen definieren. Die Variable wird zu einer öffentlichen Eigenschaft der Klasseninstanz, und auf alle Instanzen der Klasse kann in Form des Namens „object.property“ zugegriffen werden. Die Funktion wird zu einer öffentlichen Methode der Klasseninstanz, und alle Instanzen der Klasse können die Methode in der Form object.methodname() aufrufen. Bei der Definition einer Methode muss mindestens ein formaler Parameter definiert werden. Wenn eine Methode aufgerufen wird, sucht der Parser zunächst im aktuellen Objekt nach der Eigenschaft oder Methode. Wenn nicht, sucht er im Klassenobjekt des aktuellen Objekts danach. Wenn immer noch kein Klassenobjekt vorhanden ist, wird ein Fehler gemeldet.
#定义一个简单的人类
class Person :
name = 'swk' # 公共属性,所有实例都可以访问
def say_hello(self) :
print('你好!我是 %s' %self.name)
p1 = Person()
p2 = Person()
p1.name = '猪八戒'
p1.say_hello() # '你好!我是 猪八戒'
p2.say_hello() # '你好!我是 swk'
Code-Demo
#定义一个简单的类
class MyClass():
pass
#使用MyClass创建一个对象
mc = MyClass() # mc就是通过MyClass创建的对象,mc是MyClass的实例
mc_2 = MyClass()
mc_3 = MyClass()
mc_4 = MyClass()
# isinstance()用来检查一个对象是否是一个类的实例
result = isinstance(mc_2,MyClass)
#现在我们通过MyClass这个类创建的对象都是一个空对象
#也就是对象中实际上什么都没有,就相当于是一个空的盒子
#可以向对象中添加变量,对象中的变量称为属性
#语法:对象.属性名 = 属性值
mc.name = '孙悟空'
mc_2.name = '猪八戒'
print(mc_2.name)
#定义一个简单的人类
class Person :
name = 'swk' # 公共属性,所有实例都可以访问
def say_hello(self) :
print('你好!我是 %s' %self.name)
p1 = Person()
p2 = Person()
p1.name = '猪八戒'
p1.say_hello() # '你好!我是 猪八戒'
p2.say_hello() # '你好!我是 swk'
Initialisierungsmethoden und Instanzeigenschaften
In einer Klasse können wir eine spezielle Methode namens Initialisierungsmethode ( init ) definieren, die automatisch aufgerufen wird, wenn ein Objekt erstellt wird. Die Initialisierungsmethode kann Parameter akzeptieren und diese Parameter den Eigenschaften des Objekts zuweisen. Auf diese Weise können wir für jedes Objekt unterschiedliche Anfangswerte festlegen.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print(f"你好!我是{
self.name},今年{
self.age}岁。")
Im obigen Code definieren wir eine Person
Klasse, die zwei Instanzeigenschaften hat: name
und age
. Die Initialisierungsmethode akzeptiert zwei Parameter und weist sie den Eigenschaften des Objekts zu. Durch das Erstellen von Objekten und das Aufrufen say_hello
von Methoden können wir auf diese Eigenschaften zugreifen und sie ändern.
Klasseneigenschaften und Klassenmethoden
Neben Instanzeigenschaften und Instanzmethoden können Klassen auch Klasseneigenschaften und Klassenmethoden besitzen.
Klassenattribute sind Attribute, die zur Klasse selbst und nicht zur Instanz gehören. Alle Instanzen dieser Klasse können auf Klasseneigenschaften zugreifen und diese ändern.
class Person:
count = 0 # 类属性
def __init__(self, name):
self.name = name
Person.count += 1 # 每创建一个实例,count加1
@classmethod
def get_count(cls):
return cls.count # 使用cls访问类属性
Im obigen Code definieren wir ein count
Klassenattribut, das die Anzahl der erstellten Instanzen aufzeichnet. Immer wenn eine Instanz erstellt wird, wird das Klassenattribut count
durch die Initialisierungsmethode um 1 erhöht. Durch Klassenmethoden get_count()
können wir die Anzahl der bisher erstellten Instanzen ermitteln.
Vererbung und Polymorphismus
Klassen in Python unterstützen auch die Vererbung, wobei eine Klasse Eigenschaften und Methoden von einer anderen Klasse erben kann. Unterklassen können die Methoden der übergeordneten Klasse überschreiben, um polymorphe Effekte zu erzielen.
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
print(f"{
self.name}汪汪叫")
class Cat(Animal):
def speak(self):
print(f"{
self.name}喵喵叫")
Im obigen Code haben wir eine Animal
Klasse definiert, die eine speak
Methode hat. Dann haben wir die Klasse Dog
und Cat
zwei Unterklassen definiert Animal
. Unterklassen können Methoden von Elternklassen überschreiben, was eine Manifestation von Polymorphismus ist. Durch das Erstellen von Dog
und Cat
-Objekten können wir ihre jeweiligen speak
Methoden aufrufen.
magische Methode
Neben der Initialisierungsmethode ( init ) gibt es in Python viele spezielle Methoden, auch Magic-Methoden genannt. Diese speziellen Methoden beginnen und enden mit einem doppelten Unterstrich und werden zu einem bestimmten Zeitpunkt automatisch aufgerufen.
class Person:
def __init__(self, name):
self.name = name
def __str__(self):
return f"Person对象:{
self.name}"
def __eq__(self, other):
return self.name == other.name
Im obigen Code definieren wir zwei magische Methoden: __str__
und __eq__
.
__str__
Methode zum Definieren einer Zeichenfolgendarstellung eines Objekts. Diese Methode wird automatisch aufgerufen und gibt eine Zeichenfolgendarstellung zurück, wenn die Funktion aufgerufenprint
oder verwendet wird.str()
__eq__
Methoden werden verwendet, um die Gleichheit von Objekten zu definieren. Es akzeptiert ein anderes Objekt als Parameter und bestimmt anhand der benutzerdefinierten Logik, ob die beiden Objekte gleich sind.
Durch die Implementierung dieser magischen Methoden können wir das Verhalten unserer Objekte besser steuern und es unseren Erwartungen besser anpassen.
Zusammenfassung
In diesem Kapitel haben wir die grundlegenden Konzepte und Verwendung von Python-Klassen vorgestellt. Von Initialisierungsmethoden bis hin zu Instanzeigenschaften, Klasseneigenschaften, Klassenmethoden, Vererbung und Polymorphismus verfügen wir über ein schrittweises, detailliertes Verständnis der verschiedenen Funktionen und Verwendung von Klassen. Gleichzeitig lernten wir auch die Rolle und Verwendung magischer Methoden kennen, die zur Anpassung des Verhaltens der Klasse eingesetzt werden können.
Klassenkapselung
In der objektorientierten Programmierung ist die Kapselung ein wichtiges Konzept. Es bezieht sich auf die Kombination von Daten und Methoden in einer einzigen Einheit und das Verbergen spezifischer Implementierungsdetails nach außen.
Klassen in Python bieten einen Mechanismus zur Kapselung. Wir können Zugriffsmodifikatoren verwenden, um die Zugänglichkeit von Eigenschaften und Methoden zu steuern.
- Öffentlicher Zugriffsmodifikator: Es wird kein Modifikator verwendet und alle Eigenschaften und Methoden sind standardmäßig öffentlich. Auf öffentliche Eigenschaften und Methoden kann sowohl innerhalb als auch außerhalb der Klasse zugegriffen werden.
- Privater Zugriffsmodifikator: Verwenden Sie einen doppelten Unterstrich (__) als Präfix, um private Eigenschaften und Methoden zu definieren. Auf private Eigenschaften und Methoden kann nur innerhalb der Klasse und nicht direkt außerhalb der Klasse zugegriffen werden.
class Person:
def __init__(self, name):
self.__name = name # 私有属性
def __say_hello(self): # 私有方法
print(f"你好!我是{
self.__name}。")
def greet(self):
self.__say_hello()
Im obigen Code sind name
und say_hello
beide private Mitglieder. Private Eigenschaften und Methoden können mit einem doppelten Unterstrich als Präfix definiert werden. Innerhalb der Klasse können wir direkt auf diese privaten Mitglieder zugreifen. Außerhalb der Klasse kann nicht direkt auf private Mitglieder zugegriffen werden, aber indirekt über öffentliche Methoden.
Eigenschaftsaccessoren und Setter
Zusätzlich zum direkten Zugriff auf Eigenschaften können wir auch Eigenschaftszugriffsmethoden (Getter) und Eigenschaftssetzer (Setter) verwenden, um den Zugriff und die Änderung von Eigenschaften zu steuern.
class Person:
def __init__(self, name):
self.__name = name
@property
def name(self): # 属性访问器
return self.__name
@name.setter
def name(self, value): # 属性设置器
if isinstance(value, str):
self.__name = value
else:
raise ValueError("姓名必须是字符串类型")
Im obigen Code haben wir @property
einen Eigenschaftsaccessor mithilfe eines Dekorators namens definiert name()
. Durch den Zugriff obj.name
können wir __name
den Wert einer Privatimmobilie ermitteln. Dann verwenden wir @name.setter
den Dekorator, um einen Eigenschaftssetzer zu definieren, der auch „ genannt wird name()
. Durch Zuweisung obj.name = value
können wir __name
den Wert eines Privateigentums ändern.
Dies hat den Vorteil, dass wir bei der externen Verwendung von Objekteigenschaften wie auf gewöhnliche Eigenschaften auf diese zugreifen können, ohne direkt auf private Eigenschaften zuzugreifen.
Zusammenfassung
In diesem Artikel haben wir die Kapselung und Attributzugriffskontrolle von Python-Klassen vorgestellt. Durch die Verwendung von Zugriffsmodifikatoren, privaten Eigenschaften und Methoden können wir die Implementierungsdetails einer Klasse verbergen und eine öffentliche Schnittstelle für die externe Verwendung bereitstellen. Wir haben auch gelernt, wie man Eigenschaften-Accessoren und -Setter verwendet, um den Zugriff auf und die Änderung von Eigenschaften zu steuern.
Zusammenfassen
In diesem Artikel werden einige wichtige Konzepte und Techniken der objektorientierten Programmierung vorgestellt, darunter Objekte, Klassen, Vererbung, Polymorphismus, magische Methoden usw. Durch die Verwendung von Klassen und Objekten können wir Daten und Methoden in einer einzigen Entität kombinieren, um eine Codekapselung und Wiederverwendung zu erreichen.
Bei prozeduralen Programmiersprachen liegt das Hauptaugenmerk auf den Abläufen und Funktionen des Programms. In objektorientierten Programmiersprachen zerlegen wir das Programm in Objekte, von denen jedes seine eigenen Daten und Methoden hat. Dieser Weg ist flexibler und einfacher zu verstehen.
Eine Klasse ist eine Vorlage für ein Objekt, und durch Definieren einer Klasse können mehrere Instanzobjekte erstellt werden. Klassen bestehen aus Attributen und Methoden, Attribute speichern die Daten des Objekts und Methoden definieren das Verhalten des Objekts.
Initialisierungsmethoden und Instanzeigenschaften werden verwendet, um den Status eines Objekts bei seiner Erstellung zu initialisieren. Klassenattribute sind Eigenschaften, die von allen Instanzen gemeinsam genutzt werden, und Klassenmethoden sind Methoden, die auf die gesamte Klasse und nicht auf eine einzelne Instanz wirken.
Vererbung und Polymorphismus sind zwei wichtige Konzepte in der objektorientierten Programmierung. Durch Vererbung können wir neue Klassen erstellen und Eigenschaften und Methoden von vorhandenen Klassen erben. Durch Polymorphismus können verschiedene Objekte dieselbe Methode unterschiedlich implementieren, wodurch die Flexibilität und Skalierbarkeit des Codes verbessert wird.
Magic-Methoden sind in Python speziell benannte Methoden, mit denen bestimmte Funktionen oder Verhaltensweisen implementiert werden, z. B. Initialisierung, Vergleich, Operatorüberladung usw.
Darüber hinaus werden in diesem Artikel auch die Klassenkapselung und die Attributzugriffskontrolle vorgestellt. Durch die Verwendung von Zugriffsmodifikatoren, privaten Eigenschaften und Methoden können Sie die Implementierungsdetails einer Klasse verbergen und eine öffentliche Schnittstelle für die externe Verwendung bereitstellen. Eigenschaften-Accessoren und -Setter können den Zugriff und die Änderung von Eigenschaften steuern und so die Sicherheit und Wartbarkeit des Codes erhöhen.
Alles in allem ist die objektorientierte Programmierung ein leistungsstarkes Programmierparadigma, das durch die Zerlegung von Programmen in Objekte Codemodularität, Wiederverwendung und Flexibilität erreichen kann. Beherrschen Sie Konzepte und Techniken wie Klassendefinition, Vererbung, Polymorphismus und magische Methoden und sind Sie in der Lage, strukturierteren und skalierbareren Code zu schreiben.
Empfohlene Python-Boutique-Kolumnen
Grundkenntnisse in Python (0 grundlegende Einführung)
[Python-Grundkenntnisse] 0.print()-Funktion
[Python-Grundkenntnisse] 1. Datentypen, Datenanwendungen, Datenkonvertierung
[Python-Grundkenntnisse] 2. Wenn bedingte Beurteilung und Bedingungsverschachtelung
[Python-Grundkenntnisse] 3.input() Funktionen
[Grundkenntnisse in Python] 4. Listen und Wörterbücher
[Grundkenntnisse in Python] 5. For-Schleifen und While-Schleifen
[Grundkenntnisse in Python] 6. Boolesche Werte und vier Arten von Anweisungen (break, continue, pass, else)
[Grundkenntnisse in Python] 7. Praktische Bedienung – Verwenden Sie Python, um das Spiel „Word PK“ zu implementieren (1)
[Python-Grundlagen] 7. Praktische Bedienung – Verwenden Sie Python, um das Spiel „Word PK“ zu implementieren (2)
[Python-Grundlagen] 8. Programmierdenken: So lösen Sie Probleme – Denkkapitel
[Grundkenntnisse in Python] 9. Definition und Aufruf von Funktionen
[Grundkenntnisse in Python] 10. Programme mit Funktionen schreiben – Praktisches Kapitel
[Grundkenntnisse in Python] 10. Verwendung von Python um das Stein-Schere-Papier-Spiel zu implementieren - Funktionsübungs-Operations-Kapitel
[Python-Grundlagen] 11. So debuggen Sie - Häufige Fehlerursachen und Ideen zur Fehlerbehebung - Denkkapitel
[Python-Grundlagen] 12. Klassen und Objekte (1)
[Python-Grundlagen] 12 . Klassen und Objekte (2)
[Python-Grundlagen] Wissen] 13. Klassen und Objekte (3)
[Grundkenntnisse über Python] 13. Klassen und Objekte (4)
[Grundkenntnisse über Python] 14. Aufbau eines Bibliotheksverwaltungssystems (praktisch). Betrieb von Klassen und Objekten)
[Grundkenntnisse in Python] 15. Grundkenntnisse im Programmieren
[Grundkenntnisse von Python] 16. Grundlagen des Lesens und Schreibens von Dateien sowie von Operationen
[Grundkenntnisse von Python] 16. Python-Implementierung von „Fragen zum Diktieren alter Gedichte“ (Lesen, Schreiben und Codieren von Dateien – praktischer Betrieb)
[Grundkenntnisse von Python] 17. Das Modulkonzept und die Einführung
[Python-Grundlagen] 18. Praktische Bedienung – Verwendung von Python zum automatischen Versenden von Massen-E-Mails
[Python-Grundlagen] 19. Produktdenken und Verwendung von Flussdiagrammen – Denken
[Python-Grundlagen] 20. Python-Implementierung „Was man zum Mittagessen essen soll“ (Produktdenken – Praktische Bedienung)
[Grundkenntnisse in Python] 21. Der richtige Weg, effizient und langsam zu öffnen – Abschluss
[Python-Dateiverarbeitung] Lesen, Verarbeiten und Schreiben von CSV-Dateien
[Python-Dateiverarbeitung ] Automatische Excel-Verarbeitung (mit openpyxl)
[Python-Dateiverarbeitung] - Excel-Formatverarbeitung
Python-Crawler-Kenntnisse
[Python-Crawler] 1. Grundkenntnisse über Crawler
[Python-Crawler] 2. Grundkenntnisse über Webseiten
[Python-Crawler] 3. Erste Erfahrungen mit Crawlern (BeautifulSoup-Analyse)
[Python-Crawler] 4. Praktischer Crawler-Betrieb (Dish-Crawling)
[Python Crawler] 5. Praktischer Crawler-Betrieb (Crawling-Texte)
[Python-Crawler] 6. Praktischer Crawler-Betrieb (Daten mit Parametern anfordern)
[Python-Crawler] 7. Wo werden die gecrawlten Daten gespeichert? [Python - Crawler] 8. Sehen Sie sich die Vergangenheit an
und lernen Sie das Neue kennen Melden Sie sich rechtzeitig bei Ihnen [Python-Crawler] 12. Bauen Sie Ihre Crawler-Armee auf [Python-Crawler] 13. Was Sie essen können, ohne dick zu werden (praktische Crawler-Übung) [Python-Crawler] 14. Erklärung des Scrapy-Frameworks [Python-Crawler] 15. Praxis des Scrapy-Frameworks (Beliebter Job-Crawler Take) [Python-Crawler] 16. Zusammenfassung und Überprüfung der Crawler-Wissenspunkte