Typing
Python utilitza "duck typing", pero també pots utilitzar "nominative typing" per validar codi.
Introducció
Tal com vas veure a Object, Python utilitza el que es coneix com a “duck typing”, de la mateixa manera que ho fa Javascript, Go o altres llenguatges.
Per tant, Python té tipus “flexibles” i una variable pot tenir un objecte de qualsevol mena.
Aquesta flexibilitat fa que llenguatges com Python i Javascript siguin molt útils, sense les greus limitacions que tenen llenguatges com Java en la reutilització de llibreries, l’herència de classes, la dificultat de compondre objectes, etc.
Però aquesta flexibilitat a vegades pot causar problemes perquè l’objecte que té la variable no és del tipus que esperem perquè no té la propietat corresponent.
Això se soluciona amb tests, però normalment els programadors, i no diguem els alumnes, no veuen la necessitat de fer tests a menys que els obliguis.
Per solucionar aquesta situació, des de fa poc temps Python ha introduït els “type hints”.
Però el primer llenguatge a fer això va ser Typescript amb Javascript, quan aquest estava molt qüestionat, i ara està tan viu que és un dels llenguatges més importants que has d’aprendre.
Duck typing
Python és un llenguatge que utilitza “duck typing” (o tipus dinàmics).
Duck typing és una aplicació del duck test per determinar si un objecte es pot utilitzar per un propòsit particular.
El “duck test” diu que si un objecte camina com un ànec i fa “cuac” com un ànec, llavors ha de ser un ànec.
Per tant, un objecte és d’un tipus concret si té totes les propietats que demana aquell tipus.
A continuació tens 3 objectes de classes diferents que són de tipus poden nadar, però només 1 pot volar i només 1 pot parlar:
![]() | ![]() | ![]() |
Però per tu qui s’assembla més a l’ànec de l’esquerra, l’ànec “Donald” o el pingüí?
En canvi, altres llenguatges fan servir “nominative typing”, en què un objecte és d’un tipus concret perquè tu has dit expressament que era d’aquell tipus (o si es pot associar aquell tipus mitjançant mecanismes com l’herència) sense importar els atributs que té.
A continuació tens dues classes diferents que tenen el mateix mètode swim:
Si crees un objecte Duck i un objecte Whale, i només t’interessa tractar objectes que puguin nadar, en aquest cas concret el dos objectes són del mateix tipus perquè tots dos tenen el mètode swim:
=
I els dos poden nadar:
Duck swimming
Whale swimmingPerò que passa si un ànec també pot volar?
=
Estàs llegint una vista prèvia.
Inicia sessió per llegir l'article complet. Qualsevol compte obre 4 articles gratuïts al mes; l'alumnat i el professorat llegeixen les pàgines del seu curs sense límit.
Inicia sessió

