Если я создал свой собственный класс с некоторыми атрибутами pygame.Surfaces и хотел бы сохранить этот объект в файл, как я могу это сделать, если при попытке произойдет ошибка.
Класс, который я создал, является объектом, который по существу является следующим (класс Предметов включен, потому что у игрока есть предметы, которые имеют атрибуты, которые являются pygame.Surfaces):
class Item:
def __init__(self,name,icon):
self.name = name
self.icon = pygame.image.load(icon)
class Player(pygame.Sprite):
def __init__(self,{some_attrs})
skins = [{a pygame.Surface from a load image},{another}]
self.money = 0
self.items = [{Item object}]
Затем, когда я пытаюсь сохранить, я использую следующее:
with open('save.dat','wb') as file:
pickle.dump(player , file , protocol = 4)
#I have also tried without the protocol argument
Но я получаю следующую ошибку:
Traceback (most recent call last):
File "{file path}", line 883, in <module>
save_progress()
File "{file path}", line 107, in save_progress
pickle.dump(player,file,protocol=4)
TypeError: can't pickle pygame.Surface objects
К вашему сведению, все, что я положил в фигурные скобки ({и}), это просто то, что я сократил или пропустил, потому что в этом не было необходимости
Если вам нужно больше подробностей, я могу легко добавить их, если вы ответите, что вам нужно