<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Enrico Bianchi:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div id=":3dm" class="" style="overflow:hidden">Uno dei concetti fondamentali che secondo me Python ti insegna e` che la programmazione ad oggetti non e` per nulla necessaria, ma piuttosto utile in alcuni frangenti. </div></blockquote><div><br></div></div><div>Questo va contro il pensiero "tutto è un oggetto" in python.</div><div><br></div><div>Ad esempio:</div><div>un modulo è un oggetto in python, in Java no.</div><div>un package è un oggetto in python, in Java no.</div><div>una funzione è un oggetto in python, in java c'è qualcosa dalla 1.6 e si chiama static import di una funzione da una altra classe (porkata)</div><div>la metaclasse è un oggetto in python, in java è Object e non si tocca.</div><div><br></div><div>se per programmazione a oggetti intendiamo solo eredità di classi, ossia 'struttura', io oserei dire che python è estremamente più della programmazione a oggetti.</div><div><br></div><div>Quando fai monkey parching di una funzione dentro a un modulo di fatto stai estendendo quel modulo. E vale anche qui il principio di sostituzione di Liskov.</div><div><br></div><div>Ogni volta che scrivi un decorator, stai programmando a oggetti anche se non ne sei cosciente.</div><div><div><br></div></div><div>Se poi vuoi implementare qualcosa che possa essere esteso, tramite plugin, sia se usi le classi, sia se usi dei moduli, è comunque programmazione a oggetti.</div><div><br></div><div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div id=":3dm" class="" style="overflow:hidden">Dire quindi che si sta sbagliando a non usarla perche` piu` potente della programmazione procedurale (e non funzionale) e` semplicemente sbagliato e viziato da preconcetti prvenienti da altri linguaggi (Java e C# in primis)</div></blockquote><div><br></div><div>Ora togliti dalla testa python, e cala questo pensiero su un linguaggio di programmazione solamente procedurale. Vedi che cambia prospettiva, il problema di fondo che vedo è il nostro preconcetto di programmazione procedurale che è sbagliata se lo leggiamo solo in un contesto pythonico. </div></div><div>Programmare usando le funzioni in python non significa programmazione procedurale.</div><div><br></div><div>My2cents</div>
</div></div>