Polimorfizm tajemniczy

Wprowadzenie do tematu „Polimorfizm kryptograficzny” **Polimorfizm** (od greckiego polý – „wiele” i morphe – „forma”) w programowaniu to właściwość funkcji, która pozwala na jej użycie w różnych kontekstach bez zmiany jej zachowania . Zatem funkcję jednego typu można wywołać w ramach innego typu, zachowując jej pierwotne znaczenie semantyczne. Warunkiem koniecznym, aby funkcja mogła być używana jako funkcja nieodnosząca się (zewnętrzna), jest hermetyzacja. Jeśli dostęp do kodu funkcji jest bezpośredni, mówi się, że jest to kod sferyczny. Funkcji można także używać z modyfikatorami `__init__`, `__new__` i `__call__` - są to właściwości dekoratorów `@staticmethod` i `@classmethod`. W tym przypadku możemy mówić o „statycznie polimorficznym” lub „klasowo-polimorficznym”.

Np. funkcja obliczająca pierwiastek kwadratowy: ``` def sq_root(x): return x ** 0,5 ``` oraz funkcja obliczająca funkcję paraboliczną:

```py def parabola(coefs): współczynniki funkcji y = ax^2 + bx + c pass ``` obu funkcji można z równym powodzeniem używać w programie, wewnątrz funkcji i/lub klasy. Akceptują argumenty, wartość zwracaną i w ten sam sposób zachowują zachowanie kodu źródłowego w swoich ciałach. W wyniku ich realizacji można je uznać za funkcje, tj.