2016-03-18 39 views
4

次の表は、Python全体で使用される様々な抽象基底クラスを示しています。しかし、私はちょっと混乱しています(この文脈で)python抽象基底クラス、mixinと抽象メソッドの違い

Abstract Methods列とMixin Methods列の違いは何ですか? 1つはオプションで実装され、もう1つは実装されないか?

私はそれを精査してきました。私の "理論"のすべてが正しくないようです。抽象メソッドの列に

reference


enter image description here

+1

* "抽象メソッド" *:提供する必要があります。 * "Mixin Methods" *:それからあなたが得ます。 – jonrsharpe

答えて

6

何でも、あなたは自分自身を実装する必要があります。 ABCは、Mixin Methods列のメソッドの既定の実装を提供します。作成するメソッドの観点から実装されています。

2

抽象メソッドは、このABCから継承するときに定義する必要があるメソッドです。

Mixin列には後で使用できるメソッドがリストされていますが、objectではなく、このABCから継承して自由に取得できます。 __getitem__を定義した場合は、後でたとえば__iter__を自動的に使用することができます。

これらのクラスを継承するもう1つの利点は、issubclass(your_class, any_ABC)であり、インスタンスがisinstance(your_object, any_ABC)であるため、後で誰でもクラスが意図されていたことを見ることができるということです。しかし、これはあなたが投稿したテーブルの後にチュートリアルで書かれています。

+0

'issubclass()'と 'isinstance()'のドットの意味 – AlanSTACK

+0

申し訳ありませんが、これは正しくありませんでした。これらは2つの引数を持つビルトインメソッドです。 – Ilja

関連する問題