14

dict のキーに None を割り当てようとしていますが、TypeError が発生します:

self._rooms[g[0]] = None
TypeError: 'NoneType' object does not support item assignment

私のコードはここにあります:

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()

割り当てる前に割り当てますが、割り当てません。変です :/

4

4 に答える 4

13

例外は、これが実際にTypeError: 'NoneType' object does not support item assignmentあることを示唆していると明確に述べていますself._roomsNone

編集:あなたが自分で言ったように

self._rooms = {} 

また

self._rooms = dict()

口述をクリアするために必要なことを行います

于 2012-05-16T13:30:10.283 に答える
2

self._roomsでないことを確認してくださいNone

Noneのキーに値を割り当てると、dict実際に機能します。

In [1]: dict(a=None)
Out[1]: {'a': None}
于 2012-05-16T13:30:56.860 に答える
1

あなたのコメントをヤコブに読んで、犯人はこの行だと思います(投稿されていません)

d = self._rooms 
self._rooms = d.clear()

d.clear()辞書d(およびself._rooms) をクリアし、 を返しNoneます。したがって、すべてが完了したと言われ、d空の辞書であり、self._roomsですNone

これに対する最もクリーンな解決策は次のとおりです。

self._rooms.clear()  #No need for assignment here!

特に、からself._rooms継承しているdictように見えるため、次のようにして失いたくない他の属性がある場合があります。

self._rooms={}  #Now this is just a dict, no longer has `set_guest` method!
于 2012-05-16T13:45:45.807 に答える
0

self._roomsおそらく、について不平を言っているのでしょうNone

于 2012-05-16T13:30:35.123 に答える