stieß ich auf die folgenden in der python docs:Wie verhindert Python, dass eine Klasse unterklassifiziert wird?
bool ([x])
Wert auf einen Boolean konvertieren, die Standard Wahrheit Testverfahren verwendet wird. Wenn x falsch oder weggelassen ist, gibt dies Falsch zurück; andernfalls gibt True zurück. Bool ist auch eine Klasse, die eine Unterklasse von int ist. Klasse Bool kann nicht weiter unterklassifiziert werden. Die einzigen Instanzen sind False und True.
Ich habe noch nie in meinem Leben wollte bool
, Unterklasse, aber es natürlich habe ich versucht sofort, und sicher genug:
>>> class Bool(bool):
pass
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
class Bool(bool):
TypeError: Error when calling the metaclass bases
type 'bool' is not an acceptable base type
Also, die Frage: Wie wird das gemacht? Und kann ich die gleiche Technik (oder eine andere) anwenden, um meine eigenen Klassen als final
zu markieren, d. H. Um zu verhindern, dass sie unterklassifiziert werden?
Warum wollen Sie nicht 'bool' Unterklasse? Sie könnten '10' Unterklassen erstellen, um jeden möglichen booleschen Zustand darzustellen. – jamylak
Dank @Martijn, das sieht aus wie eine eng verwandte Frage. Es kam nicht während meiner SO-Suche auf (ich hätte gedacht, dass ich "final" zu den Suchbegriffen hinzufügen würde). – alexis