[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