はじめに
2100 年へようこそ。人類は宇宙に到達し、宇宙の中で繁栄する宇宙都市を建設しています。この未来的なシナリオの中で、あなたは革新的なソリューションを創出して、これらの宇宙都市の絶え間なく進化するニーズに適応する、先駆的な宇宙都市建築家です。
宇宙都市の堅牢な構築ブロックを設計する建築家として、あなたは多態性という高度な概念を活用する必要があります。このプログラミング原則により、あなたの作品は、根本的な違いがあるにもかかわらず、共通のインターフェイスを使って、様々な宇宙都市システムと円滑に相互作用し、コミュニケーションをとることができます。
この実験でのあなたの目的は、Python の多態性の力を利用して、都市のインフラストラクチャコンポーネントに対して柔軟で保守可能なコードを作成することです。これにより、何世紀にもわたって都市の成長と適応性を保証します。建築家、宇宙都市開発の最前線に立つ準備をしてください!
Python における多態性の理解
このステップでは、Python の多態性の基本を探ります。多態性により、サブクラスに親クラスで定義されたものと同じ名前のメソッドを定義できます。その結果、サブクラスはそのプロパティと振る舞いを継承します。ただし、特定の調整や追加が必要な場合、多態性により親クラスの構造を変更することなく変更が可能です。
まず、さまざまな都市システムモジュールとの相互作用のインターフェイスを表す基底クラスを作成します。
次に、~/project/infrastructure.py に以下の内容を追加します。
## infrastructure.py
class CitySystem:
def power_on(self):
raise NotImplementedError("Subclass must implement this abstract method")
class TransportationSystem(CitySystem):
def power_on(self):
print("Transportation System is now activated.")
class WasteManagementSystem(CitySystem):
def power_on(self):
print("Waste Management System is now activated.")
## This function represents the city initialization sequence
def initiate_city_systems(systems):
for system in systems:
system.power_on()
## Let’s see polymorphism in action
if __name__ == "__main__":
city_systems = [TransportationSystem(), WasteManagementSystem()]
initiate_city_systems(city_systems)
多態性を使ってシステムが正しく初期化されることをテストするには、次のコマンドを実行します。
python3 ~/project/infrastructure.py
次のような出力が表示され、輸送システムと廃棄物管理システムの両方が活性化されていることがわかります。
Transportation System is now activated.
Waste Management System is now activated.
新しいシステムの追加
これで多態性がどのように機能するかを理解したので、宇宙都市の機能を拡張する時が来ました。あなたのタスクは、既存のコードベースを混乱させることなく、新しい資源配分システムを追加することです。
同じ infrastructure.py ファイルに、独自の power_on メソッドを持ち、活性化されたときに固有のメッセージを表示する ResourceAllocationSystem と呼ばれる新しいクラスを追加します。
class ResourceAllocationSystem(CitySystem):
def power_on(self):
print("Resource Allocation System is now activated.")
新しく作成した ResourceAllocationSystem のインスタンスを含めるように、city_systems 配列を更新して、初期化シーケンスをテストすることを忘れないでください。最後のステップは、スクリプトを実行することです。
python3 ~/project/infrastructure.py
端末には以下の情報が表示されるはずです。
Transportation System is now activated.
Waste Management System is now activated.
Resource Allocation System is now activated.
まとめ
この実験では、Python の多態性の世界に足を踏み入れ、未来派の宇宙都市のインフラストラクチャのような複雑なアプリケーションに対して、汎用的で保守可能なコード構造を作成する際のその重要な役割を発見しました。基本概念から始め、さまざまなシステムの汎用的な起動シーケンスを設計することで練習し、多態性のおかげで新しいシステムを円滑に統合することで宇宙都市の機能を拡大しました。
Python のオブジェクト指向機能を活用することで、開発者および宇宙都市建築家としてのスキルを向上させ、惑星間の時間の試練に耐えうるモジュラーで適応可能なソフトウェアの基盤を築きました。



