PDA

View Full Version : [PYTHON] Dubbi su metodi/variabili private


HoldenCaulfield1987
25-10-2012, 00:19
Ciao,
recentemente ho iniziato a programmare in python.
Venendo da java dove le variabili sono marcate da un modificatore ho notevoli problemi a capire come mai python invece non mi permette di avere metodi e variabili *realmente* private.
Onestamente per me al momento è inconcepibile che qualcuno possa modificare una variabile privata che magari influsce sul corretto comportamento dell'intero oggetto, ma immagino che se è stata scelta questa via un motivo ci sarà.
Ma quale??
Grazie

cdimauro
25-10-2012, 05:50
Il creativo ha deciso di non implementare nessun meccanismo di protezione, lasciando piena libertà sia al programmatore di una classe che all'utilizzatore di fare ciò che vogliono.

Ti è mai capitato di avere un membro privato che t'impedisce di realizzare ciò che pensavi di fare, e che ti costringerebbe a riscriverti tutto?
Se sei fortunato e il creativo ha dichiarato un metodo come protetto anziché come privato, puoi salvarti usando un cracker, che poi alla fine è uno sporco trucco per rendere pubblico ciò che è stato marcato diversamente.

Tutti questi problemi con Python non ci sono: è tutto pubblico. Se proprio ci tieni a far sapere agli altri che è meglio non toccare qualcosa, per convenzione (e solo come tale) puoi mettere un _ davanti a questi identificatori.

P.S. Ne abbiamo parlato di recente anche qui (http://www.hwupgrade.it/forum/showthread.php?t=2514457). ;)

shinya
25-10-2012, 09:48
Onestamente per me al momento è inconcepibile che qualcuno possa modificare una variabile privata ...
Dovresti viverla più serenamente però. Dai zio, tranqui...

HoldenCaulfield1987
25-10-2012, 10:06
"inconcepibile" ovviamente nel senso che venendo da Java e avendo una certa idea di strutturazione del codice di una classe mi viene difficile pensarla subito in maniera cosi meno restrittiva.

cdimauro
25-10-2012, 10:30
Guardati "Dragon - La storia di Bruce Lee": magari ti sarà utile per liberarti da certi schemi. :)

HoldenCaulfield1987
25-10-2012, 10:40
Ok lo vedrò.
Ma mi chiedo: la mia domanda è davvero cosi fuori dal mondo o non sono il solo stupido che è spiazzato da questa cosa?

shinya
25-10-2012, 10:46
Ok lo vedrò.
Ma mi chiedo: la mia domanda è davvero cosi fuori dal mondo o non sono il solo stupido che è spiazzato da questa cosa?
No, se hai visto solo Java è normale. Ma se sei rimasto spiazzato adesso, fatti un tutorial su Haskell! :p

HoldenCaulfield1987
25-10-2012, 10:47
Mi rimetto a studiare va.
Ho una cultura da farmi!!!

cdimauro
25-10-2012, 10:48
No, non sei affatto l'unico. Infatti anche nel thread di cui t'ho passato il link prima, l'utente si lamentava esattamente delle stesse cose.

Il problema, come dicevo, è l'essere rimasti intrappolati in certi schemi mentali, per cui tendete a vedere le cose solo in quel modo, e vi sembra che debba essere l'unico, per cui davanti a cose completamente diverse vi trovate spiazzati.

Goditi il film, e poi applica lo stesso principio alla programmazione con Python: liberati dagli schemi! :p