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

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

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'