natknąłem następujące w python docs:W jaki sposób Python zapobiega podklasie klasy?
BOOL ([x])
Konwersja wartości do logiczną, przy użyciu standardowej procedury badania prawdy. Jeśli x jest fałszywe lub pominięte, to zwraca False; w przeciwnym razie zwraca True. bool jest również klasą, która jest podklasą int. Klasa bool nie może być dalej podklasowana. Jego jedynymi przypadkami są Fałsz i Prawda.
Nigdy w moim życiu nie chciałem podklasy bool
, ale oczywiście od razu próbował, i na pewno wystarczy:
>>> 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
Więc pytanie: Jak to jest zrobione? Czy mogę zastosować tę samą technikę (lub inną), aby oznaczyć własne klasy jako final
, czyli uniemożliwić ich subklasę?
Dlaczego nie chcesz do podklasy 'bool'? Można utworzyć podklasy "10", aby przedstawić każdy możliwy stan boolowski. – jamylak
Dzięki @Martijn, to wygląda jak ściśle powiązane pytanie. Nie pojawił się on podczas mojego wyszukiwania SO (powinienem był pomyśleć o dodaniu "ostatecznego" do wyszukiwanych słów). – alexis