Реализации алгоритмов/Мультиметод: различия между версиями

→‎Python: дополнение более простого синтаксиса
(ссылки на Википедию)
(→‎Python: дополнение более простого синтаксиса)
collision2 = collide(s1, s2)[0]
 
</source>
 
С помощью модуля multipledispatch (https://pypi.python.org/pypi/multipledispatch/) получается намного более простой синтаксис:
<source lang="python">
 
from multipledispatch import dispatch
 
class Asteroid(object): pass
class Spaceship(object): pass
 
@dispatch(Asteroid, Spaceship)
def collide(a1, s1): print "A-><-S"
 
@dispatch(Asteroid, Asteroid)
def collide(a1, a2): print "A-><-A"
 
@dispatch(Spaceship, Spaceship)
def collide(s1, s2): print "S-><-S"
 
a, s1, s2 = Asteroid(), Spaceship(), Spaceship()
 
collision1 = collide(a, s1)
collision2 = collide(s1, s2)
</source>