J'ai créé une classe en Python et essayé de taper du canard

Jugement par classe humaine et héritage, classe de voiture

Il semble y avoir un test de canard. Selon les informations de Wikipedia "If it walks like a duck and quacks like a duck, it must be a duck" "S'il marche comme un canard et sonne comme un canard, ce doit être un canard." Cela semble être l'idée. La frappe de canard est venue d'ici.

La saisie de canard ressemble à ceci dans Ruby, par exemple.

Canard tapant Ruby

sampleRuby.rb


#tester
def test(foo)
   puts foo.sound
end
 
#Les aboiements de canard
 class Duck
   def sound
     'quack'
   end
 end
 #Miaou d'un chat
 class Cat
   def sound
     'myaa'
   end
 end
 #Courir
 test(Duck.new)
 test(Cat.new)

La sortie est

python


#Résultat de sortie
quack
myaa

En bref, il semble que vous puissiez utiliser des méthodes avec le même nom dans différentes classes, et vous pouvez basculer entre les mêmes opérations sur différents objets.

Par exemple, supposons qu'un jeune et un adulte héritent d'une classe humaine et la jugent dans la classe de voiture pour déterminer s'ils sont qualifiés comme conducteurs. Par exemple, qu'en est-il de l'exemple de code suivant? Python.

Duck tapant en Python

samplePython.py


#
#Classe humaine
#  2020.07.24 ProOJI
#
class Person(object):
	"""Méthode de l'âge"""
	def __init__(self, age=1):
		self.age = age
	"""Méthode de qualification du conducteur"""
	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.')
#Classe jeunesse
class Young(Person):
	def __init__(self, age=12):
		if age < 18:
			super().__init__(age)
		else:
			raise ValueError
#Classe adulte
class Adult(Person):
	def __init__(self, age=18):
		if age >= 18:
			super().__init__(age)
		else:
			raise ValueError
#
#Classe de voiture
#Jugement de la qualification de conducteur
class Car(object):
	def __init__(self, model=None):
		self.model = model
	def ride(self, person):
		person.drive()

#Jeunesse_Génération d'instance (13 ans)
young = Young(13)
#adulte_Génération d'instance (46 ans)
adult = Adult(46)

python


#Voiture_Génération d'instance_1
car = Car()
#Jugement des jeunes de 13 ans
car.ride(young)
#Résultat de sortie
# Exception: Sorry...you cannot drive.

python


#Voiture_Génération d'instance_2
car = Car()
#Jugement des jeunes de 46 ans
car.ride(adult)
#Résultat de sortie
# You can drive!
# Because You're 46 years old.

Résumé

Il y a un concept de polymorphisme dans la programmation, et en japonais on l'appelle polymorphisme et diversité. C'est l'un des concepts orientés objet. Vous pouvez utiliser des méthodes portant le même nom, même si les classes sont de types différents, et vous pouvez basculer entre les mêmes opérations sur différents objets. Il s'avère que ce code s'appelle la saisie de canard.

Recommended Posts

J'ai créé une classe en Python et essayé de taper du canard
J'ai essayé de jouer à un jeu de frappe avec Python
J'ai écrit une classe en Python3 et Java
J'ai créé un outil de mot de passe en Python.
J'ai essayé d'ajouter un module Python 3 en C
Python: j'ai essayé menteur et honnête
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
J'ai essayé de [gratter] des images de mode et des phrases de texte avec Python.
J'ai fait un jeu de frappe simple avec tkinter de Python
ABC pour les classes abstraites Python et la saisie de canard
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
J'ai créé un graphique à barres empilées avec matplotlib de Python et ajouté une étiquette de données
J'ai essayé "un programme qui supprime les déclarations en double en Python"
J'ai essayé "Comment obtenir une méthode décorée en Python"
J'ai essayé de programmer le test du chi carré en Python et Java.
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé la notification de ligne en Python
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'étais accro aux variables de classe et aux variables d'instance erronées en Python
Je suis mort en pensant qu'une variable de classe Python était une variable d'instance
Générer une collection de première classe en Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
J'ai fait un programme de gestion de la paie en Python!
J'ai essayé d'implémenter PLSA dans Python 2
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé un langage fonctionnel avec Python
J'ai essayé d'implémenter PPO en Python
Générer une classe à partir d'une chaîne en Python
J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez
J'ai essayé de développer un formateur qui génère des journaux Python en JSON
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
J'ai essayé d'implémenter le jeu de cartes de Trump en Python
Organisez les modules et les packages Python dans le désordre
J'ai essayé le web scraping en utilisant python et sélénium
Un mémo que j'ai écrit un tri rapide en Python
J'ai essayé la détection d'objets en utilisant Python et OpenCV
Je veux créer une fenêtre avec Python
[python] Différence entre variable et self. Variable dans la classe
J'ai essayé de simuler "Birthday Paradox" avec Python
J'ai essayé la méthode des moindres carrés en Python
Un mémo créé dans un package et enregistré dans PyPI
J'ai essayé la différenciation jacobienne et partielle avec python
J'ai essayé d'implémenter TOPIC MODEL en Python
J'ai essayé de lire un fichier CSV en utilisant Python
J'ai essayé le comportement d'E / S Eventlet non bloquant en Python
J'ai essayé d'exécuter alembic, un outil de migration pour Python
J'ai essayé d'implémenter le tri sélectif en python
J'ai créé un programme cryptographique César en Python.
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
[Python] A créé une classe pour jouer des vagues de péché en arrière-plan avec pyaudio
J'ai essayé d'implémenter ce qui semble être un outil de snipper Windows avec Python
classe de cas en python
J'ai essayé Python> autopep8
J'ai essayé Python> décorateur
Notation de classe en Python
Dessine un graphique avec Julia ... j'ai essayé une petite analyse
J'ai essayé de représenter graphiquement les packages installés en Python