error in execution of the main class

1

Good thing my problem is that when wanting to execute a class from the main I have problems to print and execute it

class Persona(object):
#Definimos un constructor que recibe nombre y edad
def __init__(self,nombre,edad):
    self.nombre=nombre
    self.edad=edad



class Alumno(Persona):
#Hereda de la clase persona , el parametro de asignaturas se recibe como arbitrarios

#cuantas asignaturas tendra el alumno
 def __init__(self,nombre,edad, *arbitrarios):
    #VALIDAMOS LA EDAD PARA VER SI ES NUMERICO
    if isinstance(edad, int()):
        Persona.__init__(self, nombre, edad)
        self.asignaturas=[] #Creamos una lista vacia de asginaturas
        for parametro in arbitrarios:
            self.asignaturas.append(parametro)

        self.finalizados=False #Lo inicializamos en falso 
    else:
        raise TypeError ("El valor de la edad debe ser numerico")


def finaliza(self):
    if (self.finalizados == False):
        self.finalizados = True

    else:
        print("ya ha finalizado sus estudios")

def asignatura(self,a):
    self.asignaturas.append(a)

def __str__(self):
    asignaturas=""
    for i in self.asignaturas:
        asignaturas = asignaturas,",",i

    return "El alumno",self.nombre,"tiene las siguientes asignaturas:",asignaturas

The MAIN

from Clases.Ejercicio1 import *

alumno=Alumno('Juan GARCIA PEREZ',23,'PSP','SISTEMAS DE GESTION')
print(alumno)
alumno.finaliza()
alumno.asignatura('Ingles')
print(alumno)

The error that this one sends me

if isinstance(edad, int()):
  TypeError: isinstance() arg 2 must be a type or tuple of types
    
asked by Rebc3sp 31.05.2018 в 20:51
source

1 answer

1

The problem is that isinstance receives an invalid argument as parameter, so it returns the error:

if isinstance(edad, int()):
  TypeError: isinstance() arg 2 must be a type or tuple of types

Performing in the following way solves the problem:

if isinstance(edad, int):

Another problem is that the function __str__ is returning a value that is not string, which is throwing another error

TypeError: __str__ returned non-string (type NoneType)

Applying the following correction works perfectly.

 def __str__(self):
    asignaturas=""
    for asignatura in self.asignaturas:
        asignaturas += '%s, '%str(asignatura)

    return asignaturas
    
answered by 31.05.2018 / 21:19
source