[Python] diversi __init__ ??
Enrico Franchi
enrico.franchi a gmail.com
Mer 30 Gen 2008 22:40:36 CET
On Jan 30, 2008, at 3:01 PM, Java wrote:
> Ora non esageriamo, non è che tutto ciò che fa python è bello e
> fantastico e ciò che fanno altri linguaggi fa schifo.
>
> L'overloading è molto comodo proprio per migliorare la leggibilità del
> codice.
>
Provo a rispiegarti il concetto: il concetto di overloading in un
linguaggio senza tipizzazione statica e con metodi che vengono
definiti banalmente per accedere un numero variabile di parametri è
inesistente. Non può esistere.
> supponi di avere 10 metodi overloadati (ARGH!). E supponi che ognuno
> sia
> di 100 righe di codice.
In una situazione del genere, a prescindere andrei per prima cosa a
vedere quanti di questi vengono chiamati, quali hanno senso e
comincerei a ripensare se non ho fatto qualche errore di design.
Specie se ciascuno è 100 righe di codice (suppongo non fattorizzabile).
> Secondo te è meglio avere un unico metodo con tutti gli if chee in
> base
> alla combinazione di valori passati per parametro esegue uno o l'altro
> ramo dell'if-then-else?
>
> Io ritengo che sia meglio avere 10 metodi separati, ognuno con i suoi
> commenti e la sua documentazione.
Capisci quale è il problema? Non è implementabile il concetto: *non*
puoi. Non puoi perchè per Python qualunque tipo gli passi non fa
differenza, per cui *non* puoi introdurre l'overloading sul tipo senza
introdurre la tipizzazione statica (il che sarebbe un assurdo in
Python).
Se poi vai a vedere come è implementato il linguaggio, capiresti che
non è nemmeno possibile fare overloading sul *numero* di parametri.
Perchè? Perchè io voglio potere fare questo:
meth = foo.theMethod
dove theMethod è un metodo. Ecco: quale theMethod mi dovrebbe
restituire?
Bisogna smettere di pensare con le strutture di altri linguaggi; è un
fatto. Non posso lamentarmi che in Python non ho l'unificazione (btw,
posso introdurla con una libreria). Se voglio programmare usando
l'unificazione userò Prolog o Mozart.
> E a tal proposito ne approfitto per scagliare un'altra frecciatina: il
> python la "javadoc" se la sogna di notte, poi si sveglia tutto
> sudato e
> si accorge di avere solo un elenco di funzioni con parametri e valori
> restituiti.
Ma scaglia frecciatine finchè vuoi: tuttavia, suggerisco di centrare
il bersaglio, per evitare di fare figure barbine.
> Ma questa è una cosa che riguarda anche tutti gli altri linguaggi
> che ho
> visto...
Allora sei tendenzialmente cieco oppure non hai visto molti linguaggi,
oltre che non ti sei nemmeno preso la briga di pensare che esistono
strumenti come Doxygen.
Doxygen non è parte della libreria standard? Vero: e quindi?
In compenso le docstring possono anche contenere casi d'uso
*eseguibili*, che dal mio punto di vista Java se la sogna.
More information about the Python
mailing list