Так что я использую статические члены класса, чтобы я мог обмениваться данными между методами класса и статическими методами одного и того же класса (будет только 1 экземпляр класса) , Я это прекрасно понимаю, но мне просто интересно, когда статические члены инициализируются? Это на импорт? На первое использование класса? Потому что я собираюсь вызывать статические члены этого класса из более чем 1 модуля (следовательно, более 1 оператора import). Будут ли все модули, обращающиеся к статическим методам, использовать одни и те же элементы статических данных? И если мой основной клиент удаляет экземпляр моего класса, и затем воссоздает его (без полного завершения или повторного импорта), будут ли сохранены мои элементы данных?
Они будут инициализированы во время определения класса, что произойдет во время импорта, если вы импортируете класс как часть модуля. Это предполагает "статический" стиль определения члена класса, подобный следующему:
class Foo:
bar = 1
print Foo.bar # prints '1'
Обратите внимание, что, поскольку это статический член класса, нет необходимости создавать экземпляр класса.
Оператор импорта выполнит содержимое модуля ровно один раз, независимо от того, сколько раз и где он выполнялся.
Да, статические члены будут совместно использоваться любым кодом, обращающимся к ним.
Да, статические члены класса будут сохранены, если вы удалите объект, тип которого является этим классом:
# Create static member
class Foo:
bar = 1
# Create and destroy object of type Foo
foo = Foo()
del foo
# Check that static members survive
print Foo.bar # Still prints '1'