L'attribution NoneType de Dict
Je suis en train d'affecter Aucune à une clé dans une dict, mais j'obtiens une erreur TypeError:
self._rooms[g[0]] = None
TypeError: 'NoneType' object does not support item assignment
Mon code est ici:
r = open(filename, 'rU')
for line in r:
g = line.strip().split(',')
if len(g) > 1:
r1 = g[0]
h = Guest(g[1], str2date(g[2]), str2date(g[3]))
self._rooms.set_guest(r1, h)
else:
self._rooms[g[0]] = None
r.close()
Avant de me laisser affecter, mais non il ne sera pas. C'est étrange :/
Belle question +1, vous avez posé une question claire, nous a donné un fragment de code sans les inondations de nous et nous a donné un clair de sperme!
Cela ressemble remarquablement similaire à ce post hier, stackoverflow.com/questions/10600746/.... Est-ce un problème?
Aussi, être prudent ici. Stackoverflow est pas gentil pour l'édition de code python -- Votre échancrure entre les deux premières lignes n'est pas tout à fait raison 😉 -- Si j'avais un nickel pour chaque fois que mon python indentation a eu tort, j'aurais probablement une couple de dollars d'ici maintenant ...
Cela ressemble remarquablement similaire à ce post hier, stackoverflow.com/questions/10600746/.... Est-ce un problème?
Aussi, être prudent ici. Stackoverflow est pas gentil pour l'édition de code python -- Votre échancrure entre les deux premières lignes n'est pas tout à fait raison 😉 -- Si j'avais un nickel pour chaque fois que mon python indentation a eu tort, j'aurais probablement une couple de dollars d'ici maintenant ...
OriginalL'auteur Unistudent | 2012-05-16
Vous devez vous connecter pour publier un commentaire.
L'exception stipule clairement
TypeError: 'NoneType' object does not support item assignment
ceci suggère queself._rooms
est en faitNone
Edit:
Comme vous l'avez dit vous-même
ou
À faire ce que vous devez effacer le dict
self._rooms[g[0]]
, puisqu'il n'y a pas de "'NoneType' object est unsubscribtable" TypeError soulevées.Essayez
None[3]=4
Dans votre interprète, vous obtiendrez exactement la même exception ^^Ah, c'est probablement.
Maintenant, vous l'avez compris 😀
et
d={}
ne sont pas tout à fait équivalents, surtout sid
est une sous-classe dedict
(ce qui semble être, puisqu'il a unset_guest
méthode). Aussi, il n'est pas le même si d'autres objets de référenced
(ce qui est probablement moins susceptibles, dans ce cas).OriginalL'auteur Jakob Bowyer
À partir de la lecture de vos commentaires à Jakob, je crois que le coupable est cette ligne (non publié)
d.clear()
sera clairement le dictionnaired
(etself._rooms
) en lieu et retourNone
.Ainsi, tous les, a déclaré un fait,
d
est un dictionnaire vide etself._rooms
estNone
.La solution la plus propre à cela est:
surtout depuis
self._rooms
semble avoir hérité dedict
-- donc il peut avoir d'autres attributs que vous ne voulez pas perdre en faisant:OriginalL'auteur mgilson
Il est probablement se plaindre
self._rooms
, ce qui je pense estNone
.OriginalL'auteur NPE
Vérifier que
self._rooms
n'est pasNone
.Attribution
None
comme une valeur à unedict
'clé fonctionne:OriginalL'auteur Joseph Victor Zammit