In Python, si può avere una variabile di classe e una variabile con lo stesso nome [Static class variables in Python] esempio:
>>> class MyClass:
... i = 3
...
>>> MyClass.i
3
>>> m = MyClass()
>>> m.i = 4
>>> MyClass.i, m.i
>>> (3, 4)
In Java, non si può avere un campo statico e non statici con lo stesso nome (il seguente sarà non di compilazione, si ottiene l'errore "campo MiaClasse.i duplicati"):
public class MyClass {
private static int i;
private int i;
}
Inoltre, se si tenta di assegnare un campo statico da un'istanza, cambierà il campo statico:
public class MyClass {
private static int i = 3;
public static void main(String[] args) {
MyClass m = new MyClass();
m.i = 4;
System.out.println(MyClass.i + ", " + m.i);
}
}
4, 4
Sia in Java e Python è possibile accedere a una variabile statica da un'istanza, ma non è necessario:
Python:
>>> m = MyClass()
>>> m.i
3
>>> MyClass.i
3
Java:
public static void main(String[] args) {
System.out.println(new MyClass().i);
System.out.println(MyClass.i);
}
attributi di classe Python si può accedere tramite la classe stessa _oppure_ attraverso un'istanza. –