Python では、クラス内のメソッドは、インスタンス メソッド、クラス メソッド、静的メソッドに分類できます。それぞれが独自の目的を果たし、クラスとそのインスタンスへのさまざまなレベルのアクセスを提供します。このブログでは、クラス メソッドと静的メソッド、その使用方法、面接でよくある質問について説明します。
クラスメソッドと静的メソッドについて説明する前に、インスタンスメソッドについて簡単にまとめてみましょう:
クラスメソッドは、クラスのインスタンスだけでなく、クラス自体にアクセスできるメソッドです。これらは、クラスを表す cls を最初のパラメータとして受け取ります。これらは @classmethod デコレータを使用して定義されます。
代替コンストラクターを作成するには。
クラスレベルの属性にアクセスまたは変更します。
この例では、 from_birth_year は誕生年から年齢を計算し、 Person インスタンスを作成する代替コンストラクターです。
この例では、change_company はクラス属性 company_name を変更するクラス メソッドです。
静的メソッドは、クラスまたはインスタンス固有のデータにアクセスしたり変更したりしません。これらはクラスに属するユーティリティ メソッドであり、@staticmethod デコレーターを使用して定義されます。
クラスおよびインスタンスデータから独立して動作するユーティリティ関数を定義します。
クラス名前空間内でコードを整理しておくため。
この例では、add はクラスやインスタンスのデータとは独立して加算を実行する静的メソッドです。
インスタンスメソッド: クラス (self) のインスタンスを操作します。
クラスメソッド: クラス自体を操作します(cls)。
静的メソッド: クラスまたはインスタンス固有のデータを操作しないでください。
クラスメソッド: cls を最初のパラメータとして使用して、クラス自体を操作します。クラスレベルのデータを変更できます。
静的メソッド: クラスおよびインスタンス固有のデータから独立しています。 cls や self を最初のパラメータとして取りません。
この例では、from_string は文字列から Book オブジェクトを作成する代替コンストラクター (クラス メソッド) であり、is_valid_year は年が有効かどうかを確認する静的メソッドです。
代替コンストラクターとしてのクラス メソッドは、さまざまな種類の入力またはシナリオからインスタンスを作成する際の柔軟性を提供し、コードをより読みやすくし、オブジェクト作成ロジックの単一の場所を維持します。
インスタンスメソッド: クラスインスタンスを操作し、インスタンス固有のデータを変更できます。
クラスメソッド: cls を最初のパラメータとして使用してクラス自体を操作し、クラスレベルのデータを変更できます。
静的メソッド: クラスまたはインスタンス固有のデータを操作せず、ユーティリティ関数に使用されます。
これらの方法を理解して効果的に活用することで、より組織的で柔軟なオブジェクト指向コードを Python で作成できます。
以上がPython 面接の準備: クラス メソッドと静的メソッドの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。