Pythonの変数で `final` キーワードが相当するか?
2023-10-31 12:23:16
質問
Java の
final
に相当するドキュメントをPythonで見つけられませんでした。そのようなものがあるのでしょうか?
私はオブジェクトのスナップショットを作成しています(何か失敗したときに復元するために使用します)。このバックアップ変数が割り当てられると、それは変更されてはいけません -- Pythonのfinalのような機能は、このために素晴らしいでしょう。
どのように解決するのですか?
Javaで変数を持つことは
final
であることは、一度変数に代入すると、その変数が他のオブジェクトを指すように再代入できないことを意味します。 実際には、そのオブジェクトを変更できないという意味ではありません。 例えば、次のようなJavaのコードは全く問題なく動きます。
public final List<String> messages = new LinkedList<String>();
public void addMessage()
{
messages.add("Hello World!"); // this mutates the messages list
}
と書いても、以下はコンパイルすらできません。
public final List<String> messages = new LinkedList<String>();
public void changeMessages()
{
messages = new ArrayList<String>(); // can't change a final variable
}
つまり、あなたの質問は
final
がPythonに存在するかということです。 それはありません。
しかし、Pythonにはimmutableなデータ構造が存在します。 例えば
list
を変異させることができますが
tuple
. を変異させることができます。
set
を変異させることはできますが
frozenset
など。
私のアドバイスは、言語レベルで突然変異を起こさないようにすることを気にせず、オブジェクトが割り当てられた後に突然変異を起こすようなコードを書かないようにすることに集中することです。
関連
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
Java の switch case 文で必要な定数式の問題の解決法
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
Junitのユニットテストエラー
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
htmlとwordの相互変換の実装(画像あり)
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
-
[解決済み] Pythonで定数を作成するにはどうすればよいですか?