86

すべてのユーザーの値を抽出してリストに追加するスクリプトがありますが、「'NoneType' オブジェクトには属性 'append' がありません」というメッセージが表示されます。私のコードは

last_list=[]
if p.last_name==None or p.last_name=="": 
    pass
last_list=last_list.append(p.last_name)
print last_list

リストに姓を追加したい。ない場合は、リストに追加しないでください。助けてください注:pは、私のモジュールからすべてのfirst_name、last_name、ageなどを持つ情報を取得するために使用しているオブジェクトです....提案してください....事前に感謝します

4

4 に答える 4

46

pan_list.append(p.last)インプレース操作を行っている場合、それはオブジェクトを変更して何も返さない操作です (つまり) None

次のようにする必要があります。

last_list=[]
if p.last_name==None or p.last_name=="": 
    pass
last_list.append(p.last)  # Here I modify the last_list, no affectation
print last_list
于 2012-10-15T11:52:02.630 に答える
12

それを変数に割り当てることは想定されていません。リストに何かを追加すると、自動的に更新されます。使用のみ:-

last_list.append(p.last)

これを変数「last_list」に再度割り当てると、リストではなくなり (型を宣言していないため、none 型の変数になります)、次の実行で追加が無効になります。

于 2020-01-01T13:45:13.177 に答える
5

私はあなたが欲しいものはこれだと思います:

last_list=[]
if p.last_name != None and p.last_name != "":
    last_list.append(p.last_name)
print last_list

現在のifステートメント:

if p.last_name == None or p.last_name == "":
    pass

事実上、何もしません。p.last_nameがnoneまたは空の文字列の場合、ループ内では何も実行されません。p.last_nameが別のものである場合、ifステートメントの本体はスキップされます。

また、pan_list.append(p.last)投稿したコードの他の場所でpan_listもp.lastも使用されていないため、ステートメントはタイプミスのようです。

于 2012-10-15T11:56:35.373 に答える