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

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

12
задан Falmarri 17 August 2010 в 19:24
поделиться

1 ответ

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

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'
14
ответ дан 2 December 2019 в 21:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: