「Pythonでのプロトコル」

「Pythonのプロトコル」

構造的サブタイプの使用方法

Python 3.8 では、新しい便利な機能であるプロトコルが導入されました。プロトコルは抽象基底クラス(ABC)の代替であり、属性と関数のみを基準にして、2つのクラスが互換性があるかどうかをチェックする構造的サブタイピングを可能にします。この記事では、詳細について説明し、実践的な例を使用してプロトコルの使用方法を示します。

Photo by Chris Liverani on Unsplash

Pythonにおける型付け

まず、Pythonの型付けについて説明しましょう。Pythonは動的型付け言語であり、型は実行時に推論されます。次のコードは問題なく実行されます:

def add(x, y):    return x + yprint(add(2, 3))print(add("str1", "str2"))

最初の呼び出しは整数の加算であるため、結果は5を返します。2番目の呼び出しは文字列の連結であり、”str1str2″を返します。これは、静的型付けのC++などとは異なり、型宣言が必要ではありません:

int add(int x, int y) {    return x + y;}std::string add(std::string x, std::string y) {    return x + y;}int main(){    std::cout<<add(2, 3);    std::cout << add("str1", "str2");    return 0;}

静的型付けは、コンパイル時にエラーをキャッチする可能性があるという利点があります。一方、動的型付けはより迅速なプロトタイピングや実験が可能になります。そのため、Pythonは非常に人気があります。

動的型付けはダック・タイピングとも呼ばれ、言い換えると「もしもそれがアヒルのように歩き、アヒルのように鳴くのであれば、それはアヒルである」ということです。つまり、オブジェクトが同じ属性/関数を提供している場合、同様に扱われ、他の種類を必要とする関数に渡すことができます。

ただし、特に大規模でよりプロフェッショナルなソフトウェア製品では、この信頼性のなさはメリットよりもデメリットが多くなります。そのため、静的型チェックに向けた傾向があり、例えばmypyを使用して型ヒントを提供することがあります。

サブタイピング

興味深い問題の1つは、前述のダック・タイピングの短いパラグラフで示されているように、サブタイピングです。関数のシグネチャがfoo(x: X)である場合、mypyはどのようなクラスがX以外にその関数に渡されることを許可しますか?(注:現在は…)

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

データサイエンス

「David Smith、TheVentureCityの最高データオフィサー- インタビューシリーズ」

デビッド・スミス(別名「デビッド・データ」)は、TheVentureCityのチーフデータオフィサーであり、ソフトウェア駆動型のス...

人工知能

ベイリー・カクスマー、ウォータールー大学の博士課程候補 - インタビューシリーズ

カツマー・ベイリーは、ウォータールー大学のコンピュータ科学学部の博士課程の候補者であり、アルバータ大学の新入教員です...

人工知能

アーティスの創設者兼CEO、ウィリアム・ウーによるインタビューシリーズ

ウィリアム・ウーは、Artisseの創設者兼CEOであり、ユーザーの好みに基づいて写真を精密に変更する技術を提供していますそれ...

人工知能

「15Rockの共同創業者兼CEO、ガウタム・バクシ氏によるインタビューシリーズ」

「ガウタム・バクシは、気候リスク管理とアドバイザリーサービスのグローバルリーダーである15Rockの共同創設者兼CEOですガウ...

人工知能

ジョナサン・ダムブロット、Cranium AIのCEO兼共同創設者- インタビューシリーズ

ジョナサン・ダムブロットは、Cranium AIのCEO兼共同創業者ですCranium AIは、サイバーセキュリティおよびデータサイエンスチ...

人工知能

ギル・ジェロン、Orca SecurityのCEO&共同創設者-インタビューシリーズ

ギル・ゲロンは、オルカ・セキュリティのCEO兼共同設立者ですギルは20年以上にわたりサイバーセキュリティ製品をリードし、提...