2013-02-06 1 views
-4

Je veux vérifier en Python si une instance d'une classe (étudiant) existe:est pas défini en python

def student_exist(stuno):     # check if a student exist 
    a='RIS'+str(stuno) 
    try: a 
    except NameError: 
     return False 
    else: 
     return True 

Lors de l'exécution d'un échantillon existant, tout fonctionne très bien. Lorsque j'entre un stu inexistant. nombre, au lieu de "Faux" je reçois ce qui suit:

Traceback (most recent call last): File "", line 1, in NameError: name 'RIS1112' is not defined

Qu'est-ce qui me manque ici?

+3

Vous ne l'avez pas montrez-nous tout le code; le fait d'utiliser 'a' ne fait pas * lancer * un' NameError'. 'a' est une variable locale qui contient une chaîne, elle ne fait référence à rien par magie. –

+0

Je pensais que c'est moi stupide ou est ce code malade, parce que je ne comprends pas ce qu'il fait –

+2

vous devez faire 'eval (a)', cela produira NameError – avasal

Répondre

1

Cela semble être un design vraiment mauvais, vous semblez avoir une variable globale pour chaque élève et votre vérification si cette variable existe .... Peut-être que vous devriez faire quelque chose comme

students = ["r1", "r2", "r3"] # etc etc 
def student_exist(stuno):     
    return ("r%s" % stuno) in students 
+0

L'objectif principal est d'empêcher la création d'un nouvel enregistrement étudiant pour un enregistrement existant. Pour d'autres calculs et vérifications, le «dossier» de chaque étudiant est en cours de construction en tant que classe «étudiant». –