Alguém sabe como serializar em YAML ou JSON uma classe que contém atributos que contém outras classes?
Classe player possui o atributo Spellbook(classe que retorna uma lista com magias) e o atributo Backpack(classe que retorna uma outra lista que contém os itens,etc.) que são subclasses de uma lista.
class Player: def __init__(self,name='', *args, **kwargs): super().__init__(*args, **kwargs) self._name = name self.spellbook = Spellbook(unit=self) self.base_damage = 0 self.backpack = Backpack() self.level = 0 self.stats = {'strength': 1, 'inteligence': 1} self.stats_points = 5 self._up_experience = 0 self._experience = 0 self._max_health = 0 self._health = 0 self.max_mana = 0 self._mana = 0 self.base_mana_regeneration = 0 self._mana_regeneration = 0 self.potions = 4 self._defense = 0 self.base_defense = 0 self.live_status = True self._gold = 0 self._score = 0 self.equipped_items = { 'weapon': None, 'shield': None, 'head': None, 'chest': None, 'legs': None, 'boots': None, } self._level_up()
Sempre quando vai serializar ele retorna esse erro:
TypeError: Object of type Heal is not JSON serializable
Nesse caso o erro está falando sobre a que tem no Spellbook, mas ele mostra o mesmo problema em relação aos itens.
Esta publicação aqui tem um cara que da um exemplo parecido com o que eu preciso, mas o código não funcionou comigo, fica em um loop infinito.
Serializar Objeto para JSON