Подтвердить что ты не робот

Статические члены класса python

Поэтому я использую статические члены класса, поэтому я могу обмениваться данными между методами класса и статическими методами одного и того же класса (будет только 1 экземпляр класса). Я понимаю это прекрасно, но мне просто интересно, когда статические члены инициализируются? Это на импорт? При первом использовании класса? Потому что я собираюсь называть статические члены этого класса более чем из 1 модуля (поэтому более одного оператора импорта). Будут ли все модули, получающие доступ к статическим методам, использовать одни и те же статические элементы данных? И если мой основной клиент удалит экземпляр моего класса, а затем воссоздает его (не прекращая вообще или повторно импортируя материал), сохранятся ли мои члены данных?

4b9b3361

Ответ 1

Они будут инициализированы во время определения класса, которое произойдет во время импорта, если вы импортируете класс как часть модуля. Это предполагает стиль определения типа статического класса следующим образом:

class Foo:
    bar = 1

print Foo.bar # prints '1'

Обратите внимание, что это статический член класса, нет необходимости создавать экземпляр класса.

Оператор import будет выполнять содержимое модуля ровно один раз, независимо от того, сколько раз или где он выполняется.

Да, статические члены будут совместно использоваться любым кодом, доступным для них.

Да, статические члены класса будут сохранены, если вы удалите объект, тип которого является тем классом:

# 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'