Сообщить об ошибке.

Сохранение/сериализация классов Python в документ YAML

Модуль PyYAML позволяет выгружать/сохранять экземпляры пользовательских классов Python в поток YAML.

import yaml

class Person():
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __repr__(self):
        return f"{self.__class__.__name__}(name={self.name}, age={self.age})"

# Создадим объект класса Person()
person = Person('Jessa', 28)
# сохраняем объект класса Person() в YAML
yaml_obj = yaml.dump(person)
print(yaml_obj)
# !!python/object:__main__.Person
# age: 28
# name: Jessa

# Десериализация YAML в пользовательский класс Python
new_person = yaml.load(yaml_obj, Loader=yaml.Loader)
print(new_person)
# Person(name=Jessa, age=28)
print(new_person.name, new_person.age)
# Jessa 28

Можно определить свои собственные теги для документа YAML для конкретного приложения. Самый простой способ сделать это - определить подкласс yaml.YAMLObject. Yaml.YAMLObject использует магию метакласса для регистрации конструктора, который преобразует узел YAML в экземпляр класса, и представителя, который сериализует экземпляр класса в узел YAML.

Например:

import yaml
# класс какого то приложения
class Monster(yaml.YAMLObject):
    # определяем собственный YAML тег
    yaml_tag = '!Monster'
    
    def __init__(self, name, hp, ac, attacks):
        self.name = name
        self.hp = hp
        self.ac = ac
        self.attacks = attacks
        
    def __repr__(self):
        return (f"{self.__class__.__name__}(name={self.name},"
                f" hp={self.hp}, ac={self.ac}, attacks={self.attacks})")

# создаем объект класса Monster()
monster1 = Monster(name='Spider', hp=[2, 6], ac=16, attacks=['BITE', 'HURT'])
# сохраняем экземпляр `Monster()` в YAML
yaml_obj = yaml.dump(monster1)
# смотрим
print(yaml_obj)
# !Monster
# ac: 16
# attacks:
#  - BITE
#  - HURT
# hp:
#  - 2
#  - 6
# name: Spider

# Десериализация YAML в новый экземпляр класса
monster2 = yaml.load(yaml_obj, Loader=yaml.Loader)
# объект monster2
print(monster2)
# Monster(name=Spider, hp=[2, 6], ac=16, attacks=['BITE', 'HURT'])

# объект monster1
print(monster1)
# Monster(name=Spider, hp=[2, 6], ac=16, attacks=['BITE', 'HURT'])

Более подробнее о функции yaml.dump() и ее параметрах смотрите в разделе "Запись/сериализация различных типов Python в файл YAML"

Так же читайте про безопасную загрузку объектов Python из документа YAML, полученного из ненадежного источника.