Измените print item
на:
print item,
в Python 2.7 print(item, end=" ")
в Python 3 Если вы хотите распечатать данные динамически, используя следующий синтаксис:
print(item, sep=' ', end='', flush=True)
в Python 3 Статическая инициализация класса обычно происходит непосредственно перед первым появлением одного из следующих событий:
См. JLS 12.4.1.
Также можно заставить класс инициализироваться (если он еще не инициализировался), используя Class.forName(fqn, true, classLoader)
или краткую форму Class.forName(fqn)
1 - Последний пункт присутствовал в JLS для Java 6 и Java 8, но это, очевидно, была ошибка в спецификации. В конечном итоге он был исправлен в JLS для Java 9: см. source.
Статические поля инициализируются во время инициализации «фазы» загрузки класса (загрузки, связывания и инициализации), которая включает статические инициализаторы и инициализации его статических полей. Статические инициализаторы выполняются в текстовом порядке, как определено в классе.
Рассмотрим пример:
public class Test {
static String sayHello() {
return a;
}
static String b = sayHello(); // a static method is called to assign value to b.
// but its a has not been initialized yet.
static String a = "hello";
static String c = sayHello(); // assignes "hello" to variable c
public static void main(String[] arg) throws Throwable {
System.out.println(Test.b); // prints null
System.out.println(Test.sayHello()); // prints "hello"
}
}
Test.b печатает null
, потому что, когда sayHello
был вызван в статической области видимости, статическая переменная a
не была инициализирован.
Да, все статические инициализаторы запускаются перед первым обращением к классу. Если бы было иначе, я бы назвал это ошибкой.