Heim > Backend-Entwicklung > Python-Tutorial > Beispielanalyse des Polymorphismus in Python (Details)

Beispielanalyse des Polymorphismus in Python (Details)

不言
Freigeben: 2018-09-20 16:01:40
Original
3782 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Beispielanalyse von Polymorphismus in Python. Er hat einen gewissen Referenzwert. Ich hoffe, er wird für Sie hilfreich sein.

class Human(object):  # 父类 :创建“人”类

    def __init__(self):

           print('Ill pound the code and buy you a bag')  # 我会敲打码,给你买包包

class Man(Human):  # 1)子类1 创建“男人”类

    def __init__(self):

           print('In hs, we should have the knowledge to drink wine.The President up, the kitchen down')  # 在衡水,要文武双全,有知识,会喝酒;上的总裁,下的厨房

class Woman(Human):# 2)子类2 创建“女人”类

    def __init__(self):

           print('If a man loves me, I dont care if he has a house or a car.Woman?Do you believe a')  # 如果男人爱我,我不会在意他有没有房子车子。呵呵女人啊?你信了那只能说明你太天真了。

print('human:')

h = Human()

print('man:')

m = Man()

print('woman:')

w = Woman()  # 分别对 人类、男人类、女人类创建一个变量h、m、w

print(isinstance(h,Human))#isinstance举例

print(isinstance(m,Man))

print(isinstance(m,Human))  #  分别判断h是人类吗、m是男人类吗、m是人类吗,输出结果全部为是。

#输出结果是:
# human:
# Ill pound the code and buy you a bag
# man:
# In hs, we should have the knowledge to drink wine.The President up, the kitchen down
# woman:
# If a man loves me, I dont care if he has a house or a     
     car.Woman?Do you believe a
# True
# True
# True
Nach dem Login kopieren

Dies ist der Polymorphismus von Variablen. Wenn m die __init__-Methode aufruft, unterscheidet sich der Ausgabeinhalt von Humans __init__. Dies ist der Polymorphismus von polymorphen Funktionen.

Duck Typing:

Referenz Duck Typing (englisch: Duck Typing) ist ein Stil des dynamischen Tippens. Bei diesem Stil wird die effektive Semantik eines Objekts nicht durch das Erben von einer bestimmten Klasse oder die Implementierung einer bestimmten Schnittstelle bestimmt, sondern durch den „aktuellen Satz von Methoden und Eigenschaften“. Der Name dieses Konzepts stammt von dem von James Whitcomb Riley vorgeschlagenen Ententest. Der „Ententest“ kann folgendermaßen ausgedrückt werden:

„Wenn Sie einen Vogel sehen, der wie eine Ente geht, schwimmt wie eine Ente, und quakt wie eine Ente, dann kann der Vogel eine Ente genannt werden.“

Beim Duck-Typing liegt der Fokus nicht auf der Art des Objekts selbst, sondern auf der Art und Weise, wie es verwendet wird. Beispielsweise könnten wir in einer Sprache, die kein Duck-Typing verwendet, eine Funktion schreiben, die ein Objekt vom Typ „duck“ nimmt und dessen Methoden „walk“ und „quack“ aufruft. In einer Sprache, die Duck-Typing verwendet, kann eine solche Funktion ein Objekt jeden Typs akzeptieren und seine Methoden „walk“ und „call“ aufrufen. Wenn die aufzurufenden Methoden nicht vorhanden sind, wird ein Laufzeitfehler ausgelöst. Dieses Verhalten eines beliebigen Objekts mit den richtigen Methoden „walk“ und „call“ kann von der Funktion akzeptiert werden, was zu der obigen Anweisung führt und diese Art der Typbestimmung benannt wird.

Duck-Typing profitiert oft davon, dass man die Argumenttypen in Methoden und Funktionen nicht testet, sondern sich stattdessen auf Dokumentation, klaren Code und Tests verlässt, um die korrekte Verwendung sicherzustellen.

Um es zusammenzufassen: Ententypisierung bedeutet, Methoden zu verwenden, die scheinbar nicht zu Ihnen gehören (Methoden anderer Funktionen). Ihre eigene Funktion wird ihre Natur nach der Instanziierung ändern

Das obige ist der detaillierte Inhalt vonBeispielanalyse des Polymorphismus in Python (Details). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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