После сохранения в файле серийного объекта класса я хотел бы предоставить статический метод «Загрузить», который должен снова открыть файл, десериализировать объект и вернуть новый экземпляр.Серийный объект Instanstiate от статического метода
В классическом отношении я бы подошел к этой проблеме, перегрузив конструктор и передав все необходимые аргументы. Однако, это не является общим в Python, но один предпочел бы адаптировать следующий подход:
Python class setup for serialization without pickle
Как я десериализации объекта в статическом методе, нет «ЦБС» и теперь я понятия не имею, как управлять им. Короче говоря, я хочу иметь такое поведение:
x = Foo() # default constructor. All serializable data is created later on
# working with x and creating data
x.save("my_file.pkr")
y = Foo.Load(x)
load()
функция выглядит следующим образом:
@staticmethod
def load(filename):
with open(filename, 'rb') as bin_object:
lst1 = pickle.load(bin_object)
lst2 = pickle.load(bin_object)
lst3 = pickle.load(bin_object)
lst4 = pickle.load(bin_object)
lst5 = pickle.load(bin_object)
# not possible as I already use the default constructor
return Foo(lst1, lst2, lst3, lst4, lst5)
Может кто-нибудь раскрыть меня, как создать объект Foo в методе статической нагрузки? Я все еще хочу создавать «пустые» объекты, вызывая только Foo()
.
По-видимому, «load()» принимает один аргумент. Это ссылка на объект класса. Но какая ссылка делается при вызове «Foo.Load()»? – null
Ссылка на 'Foo'. В классах Python, как и функции, являются первоклассными объектами. –