2016-05-03 16 views
5

Jaka jest różnica między atrybutami klas Pythona i atrybutami statycznymi Java?Atrybuty statyczne (Python kontra Java)

Przykładowo

Pythona

class Example: 
    attribute = 3 

Java

public class Example { 

    private static int attribute; 

} 

W Pythonie atrybut statyczna jest dostępna poprzez odniesienie do instancji?

+0

Python klasy cech można uzyskać przez klasy sam _or_ przez przykład. –

Odpowiedz

4

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); 
    }