Vengo da Java e sto imparando Python, ora. Cerco di capire il concetto dei membri della classe in Python.Membri di classe - Java vs Python
Ecco un esempio di programma in Java:
class Hello {
int x = 0;
void ex() {
x = 7;
}
public static void main(String args[]) {
Hello h = new Hello();
System.out.println(h.x);
h.ex();
System.out.println(h.x);
} }
che è quello che ho fatto in Python, a seguito di alcuni esempi che ho trovato:
class Hello:
def __init__(self) :
self.x = 0
def ex(self):
self.x = 7
h = Hello()
print(h.x)
h.ex()
print(h.x)
Entrambi i programmi di ritorno:
0
7
Ecco le mie domande:
- Il codice Python è corretto?
- Lo stile di programmazione di Python mi sembra più compatto rispetto a Java. Quindi mi chiedo, PERCHÉ Python richiede il superamento di un "sé" - Parametro.
- A questo punto Python sembra essere più "complesso" di Java. O c'è un modo per rimuovere il "sé" - Parametro?
(1) Sì. (2) Google la tua domanda esattamente così. (3) Forse, ma se c'è, è oscuro e non dovresti farlo. –
AFAIK il codice Python è corretto. E penso che il "sé" sia più necessario a causa della filosofia di Python piuttosto che della necessità tecnica. Guardando verso la mancanza di parentesi di Python per delimitare i blocchi di codice e invece attenersi rigorosamente all'indentazione, che è, come penso di aver letto qualche tempo fa, a causa della filosofia che i programmi diventano più leggibili con indentazione corretta. In questo caso: richiedendo di indicare esplicitamente che si intende la variabile di istanza e non una variabile locale per mantenere le cose inequivocabili. (Io uso anche esplicitamente "this" in Java per questo motivo ...) – Julian
'self' è esposto in Python perché" Explicit è meglio di implicito "(https://www.python.org/dev/peps/pep- 0020 /). Preferirei chiedere "perché Java ha una variabile magica non dichiarata chiamata 'questo'"? (probabilmente perché C++ ha). – cdarke