Heim >Backend-Entwicklung >Python-Tutorial >Teilen Sie Beispiele für Entenklassen und Polymorphismus in Python

Teilen Sie Beispiele für Entenklassen und Polymorphismus in Python

零下一度
零下一度Original
2017-06-15 15:59:361409Durchsuche

Der folgende Editor bietet Ihnen einen allgemeinen Vortrag über Entenklassen und Polymorphismus in Python. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf

1. Was ist Polymorphismus?

f35d6e602fd7d0f0edfa6f7d103c1b57 2cc198a1d5eb0d3eb508d858c9f5cbdbErmöglicht verschiedenen Objekten, flexibel auf dieselbe Nachricht zu reagieren
5bdf4c78156c7953567bb5a0aef2fc53Ein verwendetes Objekt auf gemeinsame Weise behandeln
23889872c2e8594e0f446a471a78ec4cNicht dynamische Sprachen müssen die Implementierung durch Vererbung und Schnittstelle durchlaufen

2. Polymorphismus in Python

<1>通过继承实现多态(子类可以作为父类来使用)
<2>子类通过重载父类的方法实现多态

class Animal:
  def move(self):
    print(&#39;animal is moving....&#39;)
class Dog(Animal):
  pass
def move(obj):
  obj.move()

>>>move(Animal())
>>>animal is moving....
>>>move(Dog())
>>>animal is moving....

class Fish(Animal):
  def move(self):
    print(&#39;fish is moving....&#39;)
>>>move(Fish())
>>>fish is moving....

3. Dynamische Sprache und Ententypisierung

f35d6e602fd7d0f0edfa6f7d103c1b57 Der Typ der Variablenbindung ist undefiniert


2cc198a1d5eb0d3eb508d858c9f5cbdb Funktionen und Methoden können jeden Typ Parameter empfangen


<3> ; Beim Aufruf der Methode wird der angegebene Parametertyp nicht überprüft


23889872c2e8594e0f446a471a78ec4c Ob der Aufruf erfolgreich ist, wird durch die Methoden und Attribute mit Parametern bestimmt, und der Aufruf ist nicht erfolgreich wird ausgelöst


43ad812d3a971134e40facaca816c822 Keine Notwendigkeit, die Schnittstelle zu implementieren

class P:
  def init(self, x, y):
    self.x = x
    self.y = y
  def add(self, oth):
    return P(self.x+oth.x, self.y+oth.y)
  def info(self):
    print(self.x, self.y)
class D(P):
  def init(self, x, y, z):
    super.init(x, y)
    self.z = z

  def add(self, oth):
    return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
  def info(self):
    print(self.x, self.y, self.z)

class F:
  def init(self, x, y, z):
    self.x = x
    self.y = y
    self.z = z

  def add(self, oth):
    return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
  
  def info(self):
    print(self.x, self.y, self.z)
  

def add(a, b):
  return a + b

if name == &#39;main&#39;:
  add(p(1, 2), p(3, 4).info())
  add(D(1, 2, 3), D(1, 2, 3).info())
  add(F(2, 3, 4), D(2, 3, 4).info())

4. Die Vorteile von Polymorphismus

f35d6e602fd7d0f0edfa6f7d103c1b57 Ermöglicht offene Erweiterung und modifiziertes Schließen

2cc198a1d5eb0d3eb508d858c9f5cbdb

Das obige ist der detaillierte Inhalt vonTeilen Sie Beispiele für Entenklassen und Polymorphismus in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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