Einführung in die objektorientierte Programmierung in der Python-Sprache (mit Code)

不言
Freigeben: 2019-03-09 13:56:35
nach vorne
2862 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in die objektorientierte Programmierung in der Python-Sprache (mit Code), die einen bestimmten Referenzwert hat Freunde in Not können Lesen Sie es, ich hoffe, es wird Ihnen hilfreich sein.

Objektorientiert in der Python-Sprache

Objektorientierte Programmierung, also OOP wird häufig für Konzepte wie Kapselung, Vererbung und Klassen erwähnt.
Der Ursprung der Objektorientierung: Basierend auf der Philosophie, dass alles ein Objekt ist, besteht die Kernidee darin, unsere Programme zu objektivieren und zu modularisieren. In der Python-Sprache wird Klasse häufig zur Benennung einer Klasse verwendet, z. B. Klasse Person( ), Klassenschüler usw. In Klassen gibt es häufig Attribute und Verhaltensweisen. Beispielsweise verfügt die Klasse Person über Attribute wie Name, Größe, Gewicht usw. Zu diesen Python-Verhaltensweisen gehören Essen, Schlafen, Freunde finden usw. Durch Klassen können wir spätere Aufrufe problemlos implementieren, ohne einige wiederholte Codes erneut schreiben zu müssen, was die Effizienz der Programmierung erheblich verbessert. Daher sind objektorientierte Programmiersprachen derzeit weit verbreitet.
Objektorientiert weist drei Hauptmerkmale auf: Vererbung, Kapselung und Polymorphismus

1 Vererbung
Vererbungskonzept: Wenn eine Klasse eine andere Klasse erbt, wird die geerbte Klasse als Unterklasse und die geerbte Klasse bezeichnet ist die übergeordnete Art.
Zweck: Ermöglichen der Wiederverwendung von Code.
Verstehen: Die Beziehung zwischen der Unterklasse und der Elternklasse ist nicht die Eltern-Kind-Beziehung im täglichen Leben. Die Beziehung zwischen der Unterklasse und der Elternklasse ist eine Ist-Beziehung Unterklasse ist die übergeordnete Klasse. Beispielsweise erbt die Klasse „Hund“ von „Tier“, was so verstanden werden kann, dass „Hund“ ein Tier ist.
Ergebnis: Nach der Vererbung verfügt die Unterklasse automatisch über die Attribute und Methoden der übergeordneten Klasse Schreiben Sie Ihre eigenen eindeutigen Attribute und Methoden. Der Zweck von Methoden besteht darin, Funktionen zu erweitern. Unterklassen können auch die Methoden der übergeordneten Klasse überschreiben.

2 Kapselung
Konzept: Kapselung, auch als Informationsversteckung bekannt, bezieht sich auf die Verwendung abstrakter Datentypen, um Daten und datenbasierte Vorgänge so zu kapseln, dass sie eine unteilbare unabhängige Einheit bilden, und die Daten sind protected Innerhalb des abstrakten Datentyps werden die internen Details so weit wie möglich ausgeblendet und nur einige externe Schnittstellen bleiben erhalten, um sie mit der Außenwelt zu verbinden. Der Rest des Systems kann mit diesem abstrakten Datentyp nur durch autorisierte Vorgänge kommunizieren und interagieren, die die Daten umgeben. Das heißt, der Benutzer muss die Implementierungsdetails der internen Methoden des Objekts nicht kennen, sondern kann entsprechend der vom Objekt bereitgestellten externen Schnittstelle (Objektname und Parameter) auf das Objekt zugreifen.
Vorteile: (1) Klare Arbeitsteilung. Nachdem der Code, der eine bestimmte Funktion implementieren kann, in eine unabhängige Entität gekapselt wurde, kann jeder Programmierer ihn bei Bedarf aufrufen und so eine professionelle Arbeitsteilung realisieren. (2) Informationen zur Geheimhaltung und Implementierungsdetails. Durch die Steuerung der Zugriffsrechte können Sie Informationen verbergen, die Client-Programmierer nicht sehen sollen. Wenn beispielsweise das Bankpasswort eines Kunden geheim gehalten werden muss, können Sie nur Berechtigungen für diesen Kunden entwickeln.
3 Polymorphismus
Konzept: Das Gleiche: Wenn dieselbe Methode aufgerufen wird und die Parameter gleich sind, ist das Verhalten unterschiedlich.
Verständnis: Unterklassen erscheinen als übergeordnete Klassen, implementieren jedoch bei der Ausführung von Aufgaben immer noch ihre eigenen Methoden. Unterklassen müssen upcasted werden, um als übergeordnete Klassen zu erscheinen. Upcasting wird von der JVM automatisch implementiert und ist sicher, Downcasting ist jedoch unsicher und erfordert eine erzwungene Konvertierung. Wenn eine Unterklasse als übergeordnete Klasse erscheint, sind ihre eigenen einzigartigen Eigenschaften und Methoden nicht verfügbar.
Der Unterschied zwischen „prozessorientiert“ und „objektorientiert“
Prozessorientiert besteht darin, die zur Lösung des Problems erforderlichen Schritte zu analysieren und diese Schritte dann mithilfe von Funktionen Schritt für Schritt umzusetzen. Rufen Sie sie einfach einzeln auf. Objektorientiert besteht darin, die Transaktion, die das Problem darstellt, in verschiedene Objekte zu zerlegen. Der Zweck der Objektfestlegung besteht nicht darin, einen Schritt abzuschließen, sondern das Verhalten von etwas im gesamten Lösungsschritt zu beschreiben Problem.
Sie können Beispiele aus dem Leben verwenden, um prozessorientiert und objektorientiert zu verstehen. Nach Abschluss eines Wettbewerbs besteht die prozessorientierte Designidee darin, zunächst die Schritte des Problems zu analysieren:
1 den Wettbewerb, 2. Mit dem Wettbewerb beginnen, 3. Midway Transcend, 4. Den Gewinner bestimmen. Führen Sie jeden der oben genannten Schritte auf unterschiedliche Weise aus.
Wenn es sich um eine objektorientierte Designidee zur Lösung des Problems handelt. Objektorientiertes Design löst Probleme aus einer anderen Perspektive. Der gesamte Wettbewerb kann unterteilt werden in 1. Wettbewerbsobjekte 2. Wettbewerbsregeln 3. Ergebnisauswertung usw.
Das Folgende ist ein kleines Beispiel, um den objektorientierten Programmierprozess der Python-Sprache zu veranschaulichen:

一、
#1 定义一个类,其中类名是学生
#2 学生具有的属性
#3 学生具有哪些行为
#4 具体化两个学生,实例化类型
class Student(object):
    name = " "
    age = 12
    weight = 50
    school = "wuhan university"
    def eat(self,orange):
        print("l love orange")
    def study(self):
        print("let me study!")
stu1 = Student()
stu2 = Student()
print(stu1)
print(stu2)
print(stu1.name)
print(stu1.age)
print(stu2.name)
print(stu2.age)

二、
#进一步优化:通过上面的程序我们发现他们最终输出的对象的属性一样,但是事实上他们是两个不同的学生,他们的名字,年龄并不相同,那么接下来需要做的就是给他们各自赋予各自的属性,利用类名.属性=某个值,和方法的调用一样也是类名.方法名
class Student(object):
    name = " "
    age = 12
    weight = 50
    school = "wuhan university"
    def eat(self,orange):
        print("l love orange")
    def study(self):
        print("let me study!")
stu1 = Student()
stu1.name="王"
stu1.age = 20

stu2 = Student()
stu2.name = "张"
stu2.age = 50
print(stu1)
print(stu1.name)
print(stu1.age)
print(stu2)
print(stu2.name)
三、
#进一步优化:通过第二个程序我们发现在定义对象的属性时我们还需要将所得属性命名在写一次,这样显然比价麻烦,于是有了更好的属性命名方法,我们可以使用初始化 
def __init__(self,、、、),最后在命名属性的时候只需要在类名后面的括号中填写具体的属性值即可,大大较少了代码量。

class Student(object):
    def __init__(self,name,age,school):
        self.name = name
        self.age = age
        self.school = school
    def eat(self,orange):
        print("l love orange")
    def study(self):
        print("let me study!")
stu1 = Student("li",25,"scu")
stu2 = Student("sun",20,"wpu")
print(stu1)
print(stu2)
print(stu1.name)
print(stu1.school)
print(stu2.name)
print(stu2.school)
Nach dem Login kopieren

self repräsentiert die Instanz in der Klasse, nicht die Klasse. Diese Instanz ruft dann die Methode in der Klasse auf Dieses Selbst gehört zu diesem Objekt. Fügen Sie beispielsweise Student eine Methode hinzu, um sich selbst vorzustellen.

class Student(object):
    def __init__(self,name,age,school):
        self.name = name
        self.age = age
        self.school = school
    def eat(self,orange):
        print("l love orange")
    def study(self):
        print("let me study!")
    def intro(self):
        print("my name is{},{} years old".format(self.name,self.age))
stu1 = Student("li",25,"scu")
stu2 = Student("sun",20,"wpu")
print(stu1)
print(stu2)
print(stu1.name)
print(stu1.school)
print(stu2.name)
print(stu2.school)
intro1 = stu1.intro()
intro2 = stu2.intro()
Nach dem Login kopieren

Wenn Sie die Attribute und andere Informationen des Objekts für den Kunden ausdrucken möchten, es aber zu viele Attribute gibt, ist es mühsam, sie einzeln auszudrucken. Sie können __str__() verwenden. , wie folgt:

class Student(object):
    def __init__(self,name,age,school):
        self.name = name
        self.age = age
        self.school = school
    def eat(self,orange):
        print("l love orange")
    def study(self):
        print("let me study!")
    def intro(self):
        print("my name is{},{} years old".format(self.name,self.age))
    def __str__(self):
        return "%s-%d"%(self.name,self.age)
stu1 = Student("li",25,"scu")
stu2 = Student("sun",20,"wpu")


print(stu1)
Nach dem Login kopieren

如果要是的Python中类的属性值不改变,那么在属性前加两个-,称为私有属性,private
如:
self.__money = money,不能再外面直接访问
print(stu1.__money)报错
但是在内部可以直接使用,如在方法eat中调用
如果属性名前是一个下划线,则他虽然可以在外部访问,但是约定俗成提示不要访问!!!

Das obige ist der detaillierte Inhalt vonEinführung in die objektorientierte Programmierung in der Python-Sprache (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!