Перед вызовом метода экземпляра или переменной экземпляра ему нужен объект (экземпляр). Когда экземпляр переменной вызывается из статического метода, компилятор не знает, к какому объекту принадлежит эта переменная. Поскольку статические методы не имеют объекта (только одна копия всегда). Когда вы вызываете переменную экземпляра или методы экземпляра из метода экземпляра, она ссылается на объект this
. Это означает, что переменная принадлежит к любому объекту, созданному, и каждый объект имеет свою собственную копию методов и переменных экземпляра.
Статические переменные отмечены как static
, а переменные экземпляра не имеют определенного ключевого слова.
Используйте модуль pickle .
import pickle
d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }
afile = open(r'C:\d.pkl', 'wb')
pickle.dump(d, afile)
afile.close()
#reload object from file
file2 = open(r'C:\d.pkl', 'rb')
new_d = pickle.load(file2)
file2.close()
#print dictionary object loaded from file
print new_d
Чтобы добавить к предыдущим предложениям, если вы хотите, чтобы формат файла был легко читаемым и изменяемым, вы также можете использовать YAML . Он отлично работает для вложенных dicts и списков, но масштабирует для более сложных структур данных (т. Е. С участием пользовательских объектов), а его большой плюс заключается в том, что формат доступен для чтения.
Вы также можете захотеть взглянуть на базу данных объектов Zope , тем сложнее вы получите :-) Наверное, излишнее то, что у вас есть, но оно хорошо масштабируется и не слишком сложно использовать.
Если вы хотите сохранить его в удобном для чтения формате в формате JSON, используйте repr
для сериализации объекта и eval
для десериализации его.
repr(object) -> string
Возвращает каноническое строковое представление объекта. Для большинства типов объектов
blockquote>eval(repr(object)) == object
.
Попробуйте модуль полки, который даст вам постоянный словарь, например:
import shelve
d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }
shelf = shelve.open('shelf_file')
for key in d:
shelf[key] = d[key]
shelf.close()
....
# reopen the shelf
shelf = shelve.open('shelf_file')
print(shelf) # => {'qwerty': [4, 5, 6], 'abc': [1, 2, 3]}
Возьмите свой выбор: Стандартная библиотека Python - Устойчивость данных . Какой из них наиболее подходит, может варьироваться в зависимости от ваших конкретных потребностей.
pickle
, вероятно, является самым простым и наиболее способным, поскольку «записывать произвольный объект в файл и
Для наилучшей производительности травления (скорость и пространство) используйте cPickle
в HIGHEST_PROTOCOL
.
JSON имеет ошибки, но когда он отвечает вашим потребностям, это также:
json
module pickle
, который может обрабатывать более сложные ситуации