Чтобы добавить сжатие к результирующему zip-файлу, просмотрите эту ссылку .
Вам нужно изменить:
zip = zipfile.ZipFile('Python.zip', 'w')
на
zip = zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED)
В случае только 10 случаев, которые будут редко меняться, вероятно, будет достаточно пары методов с использованием операторов Switch.
Если у вас есть контроль над статическими объектами, тогда все они могут реализовать новый интерфейс, который возвращает символ «кода сериализации»:
public interface IStaticObject
{
char SerializationCode { get; };
}
Следовательно, двигаться в этом направлении легко: someObject.SerializationCode. Тогда вы также можете использовать все ваши статические объекты с помощью конструктора, который регистрирует их SerializationCode с экземпляром singleton, который имеет словарь.
public class SomeStaticObject : IStaticObject
{
public void SomeStaticObject()
{
StaticObjectRegistrar.Register(this.SerializationCode, this);
}
public char SerializationCode
{
get
{
return ?;
}
}
}
При десериализации вы просто берете символ и запускаете его через этот словарь, чтобы вернуть статический объект.
Я бы создал структуру данных, содержащую два общих объекта Dictionary
, которые отражают друг друга таким образом, что ключ одного представляет значение другого и наоборот. Это позволит выполнять поиск O (1)
в обоих направлениях.