ホームページ > バックエンド開発 > Python チュートリアル > Python でクラスの静的変数を理解する方法

Python でクラスの静的変数を理解する方法

anonymity
リリース: 2022-05-27 16:12:52
オリジナル
6151 人が閲覧しました

Python は関数のデフォルト値を使用して関数の静的変数を実装します。静的メソッドの場合は、 @staticmethod アノテーションを使用できます。

Python でクラスの静的変数を理解する方法1. Python 関数のデフォルト値
Python 関数のデフォルト値を使用すると、関数を呼び出すときにコードを記述するときに便利です。多くの場合、デフォルト値を使用するだけで済みます。したがって、Python、特にクラスでは関数のデフォルト値が頻繁に使用され、通常はクラスの初期化関数でデフォルト値が使用されます。クラスを使用する場合、大量のパラメーターを渡さずに簡単にクラスを作成できます。
関数パラメータ名の後に「=defalut_value」を追加することで、関数のデフォルト値が定義されます。注意すべき点の 1 つは、デフォルト値を持つパラメータは関数パラメータ リストの最後になければならないということです。デフォルト値のないパラメータは、デフォルト値を持つパラメータの後に配置することはできません。そのように定義すると、インタプリタはパラメータの受け渡し方法を知りません。
最初にサンプル コードを見てみましょう:

def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while True:
ok = raw_input(prompt)
if ok in ('y', 'ye', 'yes'): return True
if ok in ('n', 'no', 'nop', 'nope'): return False
retries = retries - 1
if retries < 0: raise IOError, &#39;refusenik user&#39;
print complaint
ログイン後にコピー

上記の関数を呼び出すと、再試行回数と出力プロンプトの言語を変更できます。何かを変える必要がある。
2. Python は関数のデフォルト値を使用して静的変数の関数を実装します
静的変数は Python ではサポートされていませんが、関数のデフォルト値を使用して静的変数の関数を実装できます。
関数のデフォルト値が内容が可変のクラスの場合、クラスの内容は可変ですが、クラス名は変わりません。 (開いたメモリ領域は変化しないのと同じですが、内容は変化する可能性があります)。
これは、Python の関数のデフォルト値が 1 回しか実行されないためです (静的変数と同様、静的変数の初期化も 1 回実行されます)。これが共通点です。
次のプログラムの一部を見てみましょう:

def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
print f(4,[&#39;x&#39;])
print f(5)
ログイン後にコピー

出力結果は次のとおりです:

[1]
[1, 2]
[1, 2, 3]
[&#39;x&#39;, 4]
[1, 2, 3, 5]
ログイン後にコピー

前の例は理解しやすいですが、なぜ "print f( 5)」を最後に付けますか? 出力は「[1, 2, 3, 5]」ですか?
これは、「print f(4,['x'])」のときにデフォルト変数が変更されていないためです。デフォルト変数の初期化は 1 回だけ実行されるため (デフォルト値を使用した最初の呼び出し)、初期化が実行されます。オープンされたメモリ領域(デフォルト変数と呼ぶことができます)は変更されていないため、最終的な出力結果は「[1, 2, 3, 5]」になります。

以上がPython でクラスの静的変数を理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート