Python 面接の準備: クラス メソッドと静的メソッドの説明

PHPz
リリース: 2024-08-09 09:30:42
オリジナル
327 人が閲覧しました

Python Interview Preparation: Class Methods vs Static Methods Explained

Python では、クラス内のメソッドは、インスタンス メソッド、クラス メソッド、静的メソッドに分類できます。それぞれが独自の目的を果たし、クラスとそのインスタンスへのさまざまなレベルのアクセスを提供します。このブログでは、クラス メソッドと静的メソッド、その使用方法、面接でよくある質問について説明します。

インスタンスメソッド

クラスメソッドと静的メソッドについて説明する前に、インスタンスメソッドについて簡単にまとめてみましょう:

  • インスタンス メソッド: これらはクラス内で最も一般的なメソッドであり、オブジェクトの状態にアクセスしたり変更したりするために使用されます。これらは、クラスのインスタンスを表す最初のパラメータとして self を受け取ります。
リーリー

クラスメソッド

クラスメソッドは、クラスのインスタンスだけでなく、クラス自体にアクセスできるメソッドです。これらは、クラスを表す cls を最初のパラメータとして受け取ります。これらは @classmethod デコレータを使用して定義されます。

クラスメソッドを使用する理由

  • 代替コンストラクターを作成するには。

  • クラスレベルの属性にアクセスまたは変更します。

例: 代替コンストラクター

リーリー

この例では、 from_birth_year は誕生年から年齢を計算し、 Person インスタンスを作成する代替コンストラクターです。

例: クラス属性の変更

リーリー

この例では、change_company はクラス属性 company_name を変更するクラス メソッドです。

静的メソッド

静的メソッドは、クラスまたはインスタンス固有のデータにアクセスしたり変更したりしません。これらはクラスに属するユーティリティ メソッドであり、@staticmethod デコレーターを使用して定義されます。

静的メソッドを使用する理由

  • クラスおよびインスタンスデータから独立して動作するユーティリティ関数を定義します。

  • クラス名前空間内でコードを整理しておくため。

例: ユーティリティ関数

リーリー

この例では、add はクラスやインスタンスのデータとは独立して加算を実行する静的メソッドです。

手法の比較

  • インスタンスメソッド: クラス (self) のインスタンスを操作します。

  • クラスメソッド: クラス自体を操作します(cls)。

  • 静的メソッド: クラスまたはインスタンス固有のデータを操作しないでください。

クラスメソッドと静的メソッドに関するインタビューの質問

質問 1: クラス メソッドと静的メソッドの違いを説明してください。

  • クラスメソッド: cls を最初のパラメータとして使用して、クラス自体を操作します。クラスレベルのデータを変更できます。

  • 静的メソッド: クラスおよびインスタンス固有のデータから独立しています。 cls や self を最初のパラメータとして取りません。

質問 2: クラス メソッドと静的メソッドを使用してクラス Book を実装します。

リーリー

この例では、from_string は文字列から Book オブジェクトを作成する代替コンストラクター (クラス メソッド) であり、is_valid_year は年が有効かどうかを確認する静的メソッドです。

質問 3: 代替コンストラクターとしてクラス メソッドを使用するのはなぜですか?

代替コンストラクターとしてのクラス メソッドは、さまざまな種類の入力またはシナリオからインスタンスを作成する際の柔軟性を提供し、コードをより読みやすくし、オブジェクト作成ロジックの単一の場所を維持します。

まとめ

  • インスタンスメソッド: クラスインスタンスを操作し、インスタンス固有のデータを変更できます。

  • クラスメソッド: cls を最初のパラメータとして使用してクラス自体を操作し、クラスレベルのデータを変更できます。

  • 静的メソッド: クラスまたはインスタンス固有のデータを操作せず、ユーティリティ関数に使用されます。

これらの方法を理解して効果的に活用することで、より組織的で柔軟なオブジェクト指向コードを Python で作成できます。


以上がPython 面接の準備: クラス メソッドと静的メソッドの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!