2016-05-03 18 views
5

Qual è la differenza tra gli attributi di classe Python e gli attributi statici di Java?Attributi statici (Python vs Java)

Ad esempio,

in Python

class Example: 
    attribute = 3 

in Java

public class Example { 

    private static int attribute; 

} 

In Python, un attributo statico può accedere usando un riferimento a un'istanza?

+0

attributi di classe Python si può accedere tramite la classe stessa _oppure_ attraverso un'istanza. –

risposta

4

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