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.
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.
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.
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