public interface IInterface
{
void show();
}
public class MyClass : IInterface
{
#region IInterface Members
public void show()
{
Console.WriteLine("Hello World!");
}
#endregion
}
この C# コードに相当する Python を実装するにはどうすればよいでしょうか?
class IInterface(object):
def __init__(self):
pass
def show(self):
raise Exception("NotImplementedException")
class MyClass(IInterface):
def __init__(self):
IInterface.__init__(self)
def show(self):
print 'Hello World!'
これは良いアイデアでしょうか?? 回答には例を挙げてください。
ベストアンサー1
ここで他の人が言及しているように:
Python ではインターフェースは必要ありません。これは、Python が適切な多重継承とダックタイピングを備えているためです。つまり、 Java でインターフェースが必要な箇所は、Python ではインターフェースが不要です。
とはいえ、インターフェースには依然としていくつかの用途があります。そのうちのいくつかは、Python 2.6 で導入された Python の抽象基本クラスでカバーされています。インスタンス化できないが、特定のインターフェースまたは実装の一部を提供する基本クラスを作成する場合に便利です。
もう 1 つの使用法は、オブジェクトが特定のインターフェースを実装することを何らかの方法で指定する場合です。この場合も、ABC をサブクラス化することで ABC を使用できます。もう 1 つの方法は、zope.interface です。これは、非常に優れたコンポーネント フレームワークである Zope コンポーネント アーキテクチャの一部であるモジュールです。ここでは、インターフェースからサブクラス化するのではなく、クラス (またはインスタンス) をインターフェースを実装するものとしてマークします。これは、コンポーネント レジストリからコンポーネントを検索する場合にも使用できます。すばらしい!