<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">class Persona:
    def __init__(self, nombre, apellidos, edad):
        """Constructor de la clase"""
        self.Nombre = nombre
        self.Apellidos = apellidos
        self.Edad = edad

    def __str__(self):
        return (
            "Nombre: "
            + self.nombre()
            + " "
            + self.apellidos()
            + " edad: "
            + str(self.edad())
        )

    def visualiza(self):
        """Visualiza su valor"""
        print(self)

    def nombre(self):
        """retorna el nombre"""
        return self.Nombre

    def apellidos(self):
        """Retorna los apellidos"""
        return self.Apellidos

    def edad(self):
        """Retorna la edad"""
        return self.Edad


from abc import ABC, abstractmethod


class Empleado(ABC):
    def __init__(self):
        """Constructor de la clase"""
        self.Compania = "Mi CompaÃ±ia"

    def visualizaSueldo(self):
        """Visualiza el sueldo del empleado"""
        print("sueldo: ", self.sueldo())

    @abstractmethod
    def sueldo(self):
        """Metodo abstracto para definir el sueldo del empleado"""
        pass


class Medico(Persona, Empleado):
    def __init__(
        self,
        nombre,
        apellidos,
        edad,
        especialidad,
        cedula,
        costoConsulta,
        numeroConsultas,
    ):
        """Constructor de la clase"""
        Persona.__init__(self, nombre, apellidos, edad)
        self.Especialidad = especialidad
        self.Cedula = cedula
        self.CostoConsulta = costoConsulta
        self.NumeroConsultas = numeroConsultas

    def __str__(self):
        return (
            "Nombre del medico: "
            + self.nombre()
            + " "
            + self.apellidos()
            + " especialidad: "
            + self.especialidad()
            + " cedula: "
            + self.cedula()
        )

    def visualiza(self):
        """Visualiza su valor"""
        print(self)

    def especialidad(self):
        """retorna el nombre"""
        return self.Especialidad

    def cedula(self):
        """Retorna los apellidos"""
        return self.Cedula

    def sueldo(self):
        """Cualcual el sueldo"""
        return self.CostoConsulta * self.NumeroConsultas


"""
Prueba de las clases
"""
if __name__ == "__main__":
    import pickle
    import os

    a = []

    xb = Medico("Juan", "Ferrer", 50, "cirujano", "832098092", 10, 1000)
    a.append(xb)

    for k in a:
        k.visualiza()
        k.visualizaSueldo()

    # Grabar el archivo con los objetos en la lista
    print("Grabando ...")
    with open("sal.dat", "wb") as fp:
        pickle.dump(a, fp)

    # Leer el archivo cargando los objetos a la lista
    print("Leyendo ...")
    if os.path.exists("sal.dat"):
        with open("sal.dat", "rb") as fp:
            lista = pickle.load(fp)
        for k in lista:
            k.visualiza()
            k.visualizaSueldo()
    else:
        print("Error en la lectura archivo no existe ...")
</pre></body></html>