Python のクラスメソッドと静的メソッド

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

ヘゲモニー惑星帝国が支配する銀河では、帝国領域の守護者の注意深い目の下に帝国の領域が繁栄しています。これらの守護者は、秩序を維持し、帝国の定めたプロトコルが守られることを確認する責任があります。最近、守護者たちは、帝国の国境を監視するためのステルスドローンのネットワークを展開・管理する任務を与えられました。

帝国技術局によって起草されたコーダーチームとして、あなたの目的はドローン群を制御するソフトウェアを設計することです。この実験の主な焦点は、Pythonのクラスメソッドと静的メソッドを利用して、効率的でモジュール化された制御システムを作成することです。あなたのソフトウェアは、守護者がドローンの動作を簡単に操作し、さまざまなセクターで収集されたデータを重複コードなしに分析できるようにします。

あなたは帝国に対するあなたの義務を果たし、コードの行を通じて忠誠心を示す準備ができていますか?始めましょう。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python/ObjectOrientedProgrammingGroup -.-> python/class_static_methods("Class Methods and Static Methods") subgraph Lab Skills python/class_static_methods -.-> lab-271527{{"Python のクラスメソッドと静的メソッド"}} end

ドローンクラスのセットアップ

このステップでは、すべてのドローンが継承する基本となる Drone クラスを作成します。このクラスには、ドローン群の初期化とグローバル管理の面を担当するクラスメソッドと静的メソッドがあります。

始めに、~/project ディレクトリに新しいPythonファイル drone.py を開きます。次のコードを記入してください。

class Drone:
    fleet_count = 0

    def __init__(self, designation):
        self.designation = designation
        Drone.fleet_count += 1

    @classmethod
    def from_serial_number(cls, serial_number):
        designation = f"Drone-{serial_number}"
        return cls(designation)

    @staticmethod
    def is_valid_designation(designation):
        return designation.startswith("Drone-")

if __name__ == "__main__":
    ## Example usage
    standard_drone = Drone.from_serial_number("SN123")
    print(f"Designation: {standard_drone.designation}")
    print(f"Is valid designation: {Drone.is_valid_designation(standard_drone.designation)}")
    print(f"Fleet count: {Drone.fleet_count}")

このコードは、初期化子付きの Drone クラスをセットアップしており、シリアルナンバーを使用して適切な識別名で新しいドローンインスタンスを作成するクラスメソッド from_serial_number と、与えられた識別名がドローンに対して有効かどうかをチェックする静的メソッド is_valid_designation があります。

次のコマンドを使用して drone.py ファイルを実行し、drone.py__main__ ブロック内のサンプル使用法を確認してください。

python ~/project/drone.py

drone.py__main__ ブロック内のサンプル使用法コードに対応する出力が表示されるはずです。

Designation: Drone-SN123
Is valid designation: True
Fleet count: 1

任務固有の動作の実装

次に、指定されたゾーンに基づいてドローンを整理するための任務関連の静的メソッドを追加します。Drone クラスの中に新しいメソッド assign_zone を作成して、シリアルナンバーの最後の桁に基づいてドローンを帝国のセキュリティゾーンの1つに割り当てます。

既存の drone.py ファイルを変更して、新しい assign_zone メソッドを含めます。

class Drone:
    fleet_count = 0

    def __init__(self, designation):
        self.designation = designation
        Drone.fleet_count += 1

    @classmethod
    def from_serial_number(cls, serial_number):
        designation = f"Drone-{serial_number}"
        return cls(designation)

    @staticmethod
    def is_valid_designation(designation):
        return designation.startswith("Drone-")

    @staticmethod
    def assign_zone(serial_number):
        zone_mapping = {
            "1": "Residential",
            "2": "Commercial",
            "3": "Industrial",
            "4": "Agricultural"
        }
        return zone_mapping.get(serial_number[-1], "Undefined")


if __name__ == "__main__":
    standard_drone = Drone.from_serial_number("SN123")
    print(f"Assigned Zone: {Drone.assign_zone(standard_drone.designation)}")

以前と同じように更新された drone.py を実行して、新しい動作を確認します。

python ~/project/drone.py

端末には以下の情報が表示されるはずです。

Assigned Zone: Industrial

まとめ

この実験では、Pythonクラス内でクラスメソッドと静的メソッドをどのように使用するかを検討し、モジュール化された効率的な制御システムを作成しました。Drone クラスを設計し、クラスレベルの機能の使用を練習することで、インスタンス化ロジックとクラスインスタンスに依存しないユーティリティ関数の両方をカプセル化する方法を学びました。

この実践的な経験を通じて、オブジェクト指向プログラミングのスキルが磨かれ、クリーンで再利用可能なコードを書く能力が向上しました。おそらく、あなたはPythonの実力でヘゲモニー惑星帝国の領土を守る準備ができていると感じています。忘れないでください、帝国の力は忠誠な開発者が作成するコードだけの強さです!