Výhody duck-typingu proti nominálním typům rubrika: Programování: Python

9 Taco
položil/-a 23.3.2016
 
upravil/-a 25.3.2016

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

odkaz
4 diverman
odpověděl/-a 14.3.2016
 
upravil/-a 14.3.2016

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.

Komentáře

  • Taco : Metatřídy a descriptory znám. Třeba jazyk Lua něco takového má také, ale subjektivně mnohem čistěji imlementované. Mě Python ze začátku dosti nadchl, ale jak s ním častěji pracuji, tak narážím na to, že start dobrej, ale pak to více a více drhne. 14.3.2016
  • Anonym : +1 "Start dobrej ale pak to drhne .)" Jinak tady se to řešilo: http://www.abclinuxu.cz/zpravicky/php-7.0 ... viz Bystrousak, Radek Miček a Taco? 17.3.2016
  • Taco : Jo, to jsem byl já. Jenže Bystrousak se zasekl, a Radek Míček se navzdory tomu, že tomu dost rozumí, nechtěl vyjadřovat potvora. 17.3.2016

Pro zobrazení všech 6 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.