4

以下のコードを実行しようとすると、first_list が変更されますが、2 番目のリストは変更されません。外部リストを真新しいリストに置き換える方法はありますか?それとも、内部クラス メソッドから許可されているのはリスト メソッドの呼び出しだけですか? 代入演算の前に global キーワードを追加しようとしましたが、構文エラーが発生します。

first_list = []
second_list = []


class MyClass:

    def change_values(self):
        first_list.append('cat')
        second_list = ['cat']

 test = MyClass()
 test.change_values()
 print(first_list)
 print(second_list)
4

2 に答える 2

8

まず:変更可能な状態のグローバル変数を持つことは、ほとんど良い考えではありません。モジュール レベルの変数は、定数またはシングルトンと同じように使用する必要があります。変数の値を変更したい場合は、それをパラメーターとして関数に渡し、関数から新しい値を返す必要があります。

あなたの質問への答えは次のいずれかです。

first_list = []
second_list = []


class MyClass:
    def change_values(self):
        first_list.append('cat')
        second_list[:] = ['cat']

test = MyClass()
test.change_values()
print(first_list)
print(second_list)

また:

first_list = []
second_list = []


class MyClass:
    def change_values(self):
        first_list.append('cat')
        global second_list
        second_list = ['cat']

test = MyClass()
test.change_values()
print(first_list)
print(second_list)
于 2013-08-08T16:18:12.310 に答える