Любой набор переменных также может быть завершен в классе. Переменные «Variable» могут быть добавлены к экземпляру класса во время выполнения, напрямую обращаясь к встроенному словарю через атрибут __dict__.
Следующий код определяет класс Variables, который добавляет переменные (в этом случае атрибуты) к своему экземпляру во время построения. Имена переменных берутся из указанного списка (который, например, мог быть сгенерирован программным кодом):
# some list of variable names
L = ['a', 'b', 'c']
class Variables:
def __init__(self, L):
for item in L:
self.__dict__[item] = 100
v = Variables(L)
print(v.a, v.b, v.c)
#will produce 100 100 100
Это ожидаемое поведение сервера GC. Он настроен так, чтобы наилучшим образом использовать доступную память, и поэтому не будет собирать, если в нем действительно нет необходимости. Это действительно проблема? Операционная система способна передавать и выгружать память по мере необходимости, поэтому, если вы работаете в 64-битной среде, это не должно иметь влияния в большинстве сценариев. Если это все еще вызывает беспокойство, есть несколько альтернатив:
gcServer
на false
активирует рабочую станцию GC GCHeapCount
. См. эту статью от Maoni Stephens для получения дополнительной информации .NET Core 3.0 принесет новые настройки для настройки ГХ для низких -сценарии, но он не будет выпущен до второго семестра.