2011-01-17 5 views
3

je reçois un message qui indique:type d'opérande non pris en charge pour NoneType et str

Traceback (most recent call last): 
File "/var/www/fosa/error_supressor.py", line 46, in <module> 
    sys.stderr.write(latest + '\n') 
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' 

J'ai essayé de résoudre ce problème pour les jours maintenant, mais honnêtement, je suis un programmeur rocheux. Donc, alignons le problème et voyons s'il y a un patient qui peut prendre le temps de résoudre le problème d'un humble inconnu :-)

De plus, quand je consulte mon journal des erreurs, je trouve ce message d'erreur, que je soupçonne être liés:

File "/var/www/fosa/app/controllers/client/client.py", line 601, in detail 
    if not course.bookable or not course.school.partner.active: # both objects are boolean 
AttributeError: 'NoneType' object has no attribute 'bookable' 
+0

Que faites-vous pour obtenir le Erreur? Est-ce le code que vous avez écrit? Pouvez-vous poster le code le donne l'erreur? –

+1

Avez-vous écrit ces fichiers? Si oui, donnez-nous les sections pertinentes d'entre eux, s'il vous plaît. –

+3

un me tells coup d'oeil rapide que vous devez faire quelque chose comme sys.stderr.write (str (dernier) + « \ n »), car le dernier n'est pas une chaîne. mais ABIT code affiché ici pourrait aider – Bram

Répondre

4
  • Quelque chose est obligatoire None-latest. Déterminez ce que c'est et corrigez votre erreur de logique.

  • Quelque chose est lié None à course. Figure etc.

3

Il est évident que le retraçage, on a: - latest est Aucun - Aucun course est

Un modèle commun en python est d'avoir des noms de variables être liés toujours un type unique, sauf si la plus grande valeur significative que l'on peut attribuer une valeur est « nul », dans ce cas, vous feriez la variable égale à None. Par exemple. dire get(pk) retourne un objet à partir de la base de données, mais il retourne None quand il n'y a pas d'objet pour la pk clé. Pour corriger le bug que je ferais ceci:

Ecrire quelque chose comme:

if latest is None: 
    # do something 
else: 
    sys.stderr.write(latest + '\n') 

ou peut-être

sys.stderr.write('%s\n' % latest) #so that latest can be of any type 

au lieu de

sys.stderr.write(latest + '\n')
+0

Merci pour vos réponses. Comme vous l'avez probablement deviné, je n'ai pas écrit ce code. J'ai fini par utiliser ce conseil: sys.stderr.write (latest + '\ n'). Il y avait du champagne, mais ...... Maintenant je une nouvelle erreur et je n'ai pas fait autre chose que de changer ce code dans error_supressor: Fichier « /var/www/fosa/app/dispatcher.py », ligne 47, dans redirect_course_detail '? Valuta =' + str (currency_id), 301) AttributeError: l'objet 'NoneType' n'a pas d'attribut 'get_detail_url' Je ne suis pas sûr quel code afficher car ces 3 erreurs doivent être liées et ils sont dans des fichiers différents, des objets différents ... – Hype

Questions connexes