2016-03-18 5 views
4

Die folgende Tabelle zeigt verschiedene abstrakte Basisklassen, die in ganz Python verwendet werden. Allerdings bin ich ein wenig verwirrt genau (in diesem Zusammenhang)Python abstrakte Basisklassen, Unterschied zwischen Mixin & Abstract Methode

, was der Unterschied zwischen der Abstract Methods Spalte und der Mixin Methods Spalte. Ist der eine optional implementiert und der andere nicht?

Ich habe darüber nachgedacht und jede meiner "Theorien" scheint nicht richtig zu sein.

reference


enter image description here

+1

* "Abstrakte Methoden" *: Sie müssen angeben. * "Mixin Methoden" *: dann wirst du bekommen. – jonrsharpe

Antwort

6

Alles, was in der Spalte Kurzbeschreibung Methoden, müssen Sie sich selbst implementieren. Das ABC bietet Standardimplementierungen der Methoden in der Spalte Mixin-Methoden, implementiert in Bezug auf die Methoden, die Sie schreiben müssen.

2

Die abstrakten Methoden sind diejenigen, die Sie definieren müssen, wenn Sie von diesem ABC erben.

Die Mixin-Spalte listet die Methoden auf, die Sie anschließend verwenden können, Sie erhalten sie kostenlos, indem Sie nicht von object sondern von diesem ABC erben. Wenn Sie __getitem__ definieren, können Sie danach automatisch __iter__ verwenden.

Ein weiterer Vorteil der Erben von diesen Klassen ist, dass jeder hinterher sehen kann, was Ihre Klasse sein sollte, denn es ist issubclass(your_class, any_ABC) und jede Instanz ist isinstance(your_object, any_ABC). Aber das wird im Tutorial nach der von Ihnen geposteten Tabelle geschrieben.

+0

Was ist mit den Punkten auf 'issubclass()' und 'isinstance()' – AlanSTACK

+0

Sorry, das war nicht korrekt, das sind nur eingebaute Methoden mit zwei Argumenten, danke – Ilja

Verwandte Themen