Pythonには公式にインターフェースを定義する方法がありません。そのため、今回は非公式なインターフェイスを作成するために、通常はクラスを定義してそれを使用してみます。
なお、Pythonにおいてインターフェイスとは、クラスやオブジェクトの公開されたメソッドや属性の集合を指している。
■Python
Google Colaboratory(Google Colab),2023年3月18日時点ではPython 3.9.16が用いられる。
■非公式なインターフェイスを作成する
では、早速非公式なインターフェイスを作成するために、コードを書いていきます。
■コード
class Interface_test: def do_test(self): raise NotImplementedError() class Class_test1(Interface_test): def do_test(self): print("Class_test1のdo_testを出力") class Class_test2(Interface_test): def do_test(self): print("Class_test2のdo_testを出力") if __name__ == "__main__": object_1 = Class_test1() object_1.do_test() object_2 = Class_test2() object_2.do_test()
今回は、Interface_testというオブジェクトを作成するためのテンプレート(設計図)であるクラスを定義します。定義後、クラス内にdo_test()というメソッドを定義します。定義後、クラス内のメソッドで渡される最初の引数,パラメータは、オブジェクト自体でなければならないため、「self(自己)」と記述し、最初の引数として渡す。なお、今回は定義したメソッドで、自作した関数などで例外を発生させたい場合に用いるraiseを記述し、クラスを直接使用しようとした場合はエラーが発生させます。
その後、Class_test1とClass_test2というオブジェクトを作成するためのテンプレート(設計図)である2つのクラスを定義します。クラスの括弧内には、引数,パラメータとしてInterface_testを渡します。これでInterface_testというクラスの継承している形となります。次にClass_test1とClass_test2という2つのクラス内には、do_test()というメソッドを定義。定義後、メソッドが呼び出されたときに実行される処理としてprint()を用いて文字列を出力させるものを記述します。
記述後、「if __name__ == “__main__”:」を記述し、以下の処理を実行します。以下の処理とは、object_1とobject_2という変数を定義し、その中にClass_test1とClass_test2をそれぞれ格納します。これでインスタンス化が行われます。インスタンス化によりobject_1とobject_2というオブジェクトが作成されたことで、クラス内に定義したメソッドにアクセスできるようになりました。
インタンス化後、作成したオブジェクトに対してドット演算子( . )を用い、do_test()というメソッドにアクセスします。
■実行・検証
このセルを保存し、Google Colaboratory上で、セルを実行してみます。
実行してみると、Class_test1とClass_test2のクラスは、Interface_testというクラスを継承しているため、インターフェイスのメソッドを実装しなければなりませんので、2つの作成したオブジェクトにドット演算子( . )を用い、do_test()というメソッドにアクセスすると、それぞれのクラス内のメソッドが呼び出され、処理が実行。実行後、print()で文字列が出力されました。
コメント