Ich habe eine Klasse in Python erstellt und versucht, Enten zu tippen

Beurteilung nach menschlicher Klasse und Erbschaft, Autoklasse

Es scheint einen Ententest zu geben. Nach Angaben von Wikipedia "If it walks like a duck and quacks like a duck, it must be a duck" "Wenn es wie eine Ente geht und wie eine Ente klingt, muss es eine Ente sein." Es scheint die Idee zu sein. Das Tippen von Enten kam von hier.

Das Tippen von Enten sieht zum Beispiel in Ruby so aus.

Ente tippt Ruby ein

sampleRuby.rb


#Prüfung
def test(foo)
   puts foo.sound
end
 
#Ente bellt
 class Duck
   def sound
     'quack'
   end
 end
 #Miau einer Katze
 class Cat
   def sound
     'myaa'
   end
 end
 #Lauf
 test(Duck.new)
 test(Cat.new)

Die Ausgabe ist

python


#Ausgabeergebnis
quack
myaa

Kurz gesagt, es scheint, dass Sie Methoden mit demselben Namen in verschiedenen Klassen verwenden und zwischen denselben Operationen für verschiedene Objekte wechseln können.

Angenommen, ein junger Mensch und ein Erwachsener erben eine menschliche Klasse und beurteilen sie in der Fahrzeugklasse, um festzustellen, ob sie als Fahrer qualifiziert sind. Was ist zum Beispiel mit dem folgenden Beispielcode? Python.

Ente tippt in Python

samplePython.py


#
#Menschliche Klasse
#  2020.07.24 ProOJI
#
class Person(object):
	"""Altersmethode"""
	def __init__(self, age=1):
		self.age = age
	"""Fahrerqualifizierungsmethode"""
	def drive(self):
		if self.age >= 18:
			print('You can drive!')
			print("Because You're {} years old.".format(self.age))
		else:
			raise Exception('Sorry...you cannot drive.')
#Jugendklasse
class Young(Person):
	def __init__(self, age=12):
		if age < 18:
			super().__init__(age)
		else:
			raise ValueError
#Erwachsenenklasse
class Adult(Person):
	def __init__(self, age=18):
		if age >= 18:
			super().__init__(age)
		else:
			raise ValueError
#
#Autoklasse
#Beurteilung der Fahrerqualifikation
class Car(object):
	def __init__(self, model=None):
		self.model = model
	def ride(self, person):
		person.drive()

#Jugend_Instanzgenerierung (13 Jahre alt)
young = Young(13)
#aufgewachsen_Instanzgenerierung (46 Jahre alt)
adult = Adult(46)

python


#Wagen_Instanzgenerierung_1
car = Car()
#Beurteilung von Jugendlichen im Alter von 13 Jahren
car.ride(young)
#Ausgabeergebnis
# Exception: Sorry...you cannot drive.

python


#Wagen_Instanzgenerierung_2
car = Car()
#Beurteilung von Jugendlichen 46 Jahre alt
car.ride(adult)
#Ausgabeergebnis
# You can drive!
# Because You're 46 years old.

Zusammenfassung

Es gibt ein Konzept des Polymorphismus in der Programmierung, und auf Japanisch heißt es Polymorphismus und Diversität. Dies ist eines der objektorientierten Konzepte. Sie können Methoden mit demselben Namen verwenden, auch wenn die Klassen unterschiedlichen Typs sind, und Sie können zwischen denselben Operationen für verschiedene Objekte wechseln. Es stellt sich heraus, dass ein solcher Code als Ententypisierung bezeichnet wird.

Recommended Posts

Ich habe eine Klasse in Python erstellt und versucht, Enten zu tippen
Ich habe versucht, mit Python ein Tippspiel zu spielen
Ich habe eine Klasse in Python3 und Java geschrieben
Ich habe ein Passwort-Tool in Python erstellt.
Ich habe versucht, ein Python 3-Modul in C hinzuzufügen
Python: Ich habe es mit Lügner und Ehrlichkeit versucht
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Ich habe versucht, mit Python Modebilder und Textsätze zu [kratzen].
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
ABC für Python-Abstract-Klassen und Ententypisierung
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe ein gestapeltes Balkendiagramm mit matplotlib von Python erstellt und eine Datenbeschriftung hinzugefügt
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe Line Benachrichtigung in Python versucht
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich war süchtig nach falschen Klassenvariablen und Instanzvariablen in Python
Ich bin gestorben, weil ich dachte, eine Python-Klassenvariable sei eine Instanzvariable
Generieren Sie eine erstklassige Sammlung in Python
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe versucht, PPO in Python zu implementieren
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden
Ich habe versucht, einen Formatierer zu entwickeln, der Python-Protokolle in JSON ausgibt
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich habe versucht, Trumps Kartenspiel in Python zu implementieren
Organisieren Sie Python-Module und -Pakete in einem Chaos
Ich habe versucht, Web-Scraping mit Python und Selen
Ein Memo, das ich schnell in Python geschrieben habe
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich möchte mit Python ein Fenster erstellen
Unterschied zwischen Variablen und Selbst. Variablen in der [Python] -Klasse
Ich habe versucht, "Birthday Paradox" mit Python zu simulieren
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Ein Memo, das in einem Paket erstellt und in PyPI registriert wurde
Ich habe Jacobian und teilweise Differenzierung mit Python versucht
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Ich habe versucht, das Verhalten von E / A-Eventlets in Python nicht zu blockieren
Ich habe versucht, alembic auszuführen, ein Migrationstool für Python
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
[Python] Erstellt eine Klasse, um mit pyaudio Sinuswellen im Hintergrund zu spielen
Ich habe versucht, ein scheinbar Windows-Snipper-Tool mit Python zu implementieren
Fallklasse in Python
Ich habe Python> autopep8 ausprobiert
Ich habe Python> Decorator ausprobiert
Klassennotation in Python
Zeichne ein Diagramm mit Julia ... Ich habe eine kleine Analyse versucht
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen