W Pythonie można mieć klasę zmiennej i instancję zmiennej o tej samej nazwie [Static class variables in Python]:
>>> class MyClass:
... i = 3
...
>>> MyClass.i
3
>>> m = MyClass()
>>> m.i = 4
>>> MyClass.i, m.i
>>> (3, 4)
W Javie, nie można mieć pole statyczne i nie statyczne o tej samej nazwie (dodaje się nie kompilacji, pojawi się błąd „Duplikat MyClass.i pole”):
public class MyClass {
private static int i;
private int i;
}
dodatkowo, jeśli spróbujesz przypisać pola statycznego z instancji, będzie to zmienić pole statyczne:
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
Zarówno Java i Python można uzyskać dostęp do zmiennej statycznej z instancji, ale nie trzeba do:
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);
}
Python klasy cech można uzyskać przez klasy sam _or_ przez przykład. –