On Monday, September 19, 2016 at 5:48:35 PM UTC+1, Peter Otten wrote: > kerbingamer376 wrote: > > > Hi, > > [No need to start a new thread for this] > > > I have an object (pygame.mixer.Sound) and, to convert it to a picklable > > format, I can run: > > > > sound_object.get_raw() > > > > and to turn that back into an object, I can run: > > > > sound_object = pygame.mixer.Sound(raw_data) > > > > Is it possible to use copyreg or something similar so it's done > > automatically when I pickle pygame.mixer.Sound() objects? > > Have a look at the example from the documentation: > > >>> import copyreg, copy, pickle > >>> class C(object): > ... def __init__(self, a): > ... self.a = a > ... > >>> def pickle_c(c): > ... print("pickling a C instance...") > ... return C, (c.a,) > ... > >>> copyreg.pickle(C, pickle_c) > > > Translating that gives (untested) > > import copyreg # copy_reg in Python 2 > import pygame.mixer > > def pickle_sound(sound): > return pygame.mixer.Sound, (sound.get_raw(),) > > copyreg.pickle(pygame.mixer.Sound, pickle_sound) > > Does that work?
I get: _pickle.PicklingError: Can't pickle <class 'Sound'>: attribute lookup Sound on builtins failed -- https://mail.python.org/mailman/listinfo/python-list