Výhody duck-typingu proti nominálním typům rubrika: Programování: Python
Osobně to považuji proti nominálnímu typování jako naprosto zcestný způsob.
Při hlubší úvaze jsem dospěl k podezření, že typy v něm jsou jen kůli tomu, aby se dali dělat taková zvěrstva, jakože za běhu k existujícímu objektu přidám nějakou metodu, a oni ji automaticky dostanou i všichni potomci. Jinak bych si zcela vystačil s konstruktory.
Navzdory mé snaze jsem nepřišel na to, k čemu užitečnému tedy v Pythonu ty typy můžou být. Opravdu je to jen syntaktický cukr?
Předem upozorňuji, že neupírám Pythonu jeho čitelnost a eleganci a tak. Trápí mě opravdu jen to typování.
Edit:
class Duck(object): def lie(self): "Kachno, lehni!" pass class Lawyer(object): def lie(self): "Právníku, lži!" pass def courtroom(m): m.lie()
Edit 2:
Možná doplním, nepovažuji duck-typing za synonymum pro dynamické typování. To vůbec není to samé.
Pokud tě do hloubky zajímá, proč to je tak, jak to je, doporučuji přečíst a pochopit Unifying types and classes in Python.
S tím souvisí navazující témata jako metatřídy a descriptory (nemá počeštěný název).
Tyto techniky umožňují vytvářet vyšší abstrakce nad dědičností, řízení přístupu k atributům apod.
Určitě tě to ale nemá trápit, jsou to prostě featury, které dělají python zajímavější oproti jiným jazykům.
Pro zobrazení všech 6 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře