mi sono imbattuto nel seguente nel python docs:In che modo Python impedisce a una classe di essere sottoclassata?
bool ([x])
convertire un valore per un valore booleano, utilizzando la procedura di prova vero standard. Se x è falso o omesso, restituisce False; in caso contrario, restituisce True. bool è anche una classe, che è una sottoclasse di int. La classe non può essere ulteriormente classificata in sottoclasse. Le sue uniche istanze sono false e vero.
non ho mai in vita mia voleva sottoclasse bool
, ma naturalmente ho subito provato, e abbastanza sicuro:
>>> 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
Quindi, la domanda: come è questo fatto? E posso applicare la stessa tecnica (o un'altra) per contrassegnare le mie classi come final
, ad esempio, per impedire che vengano sottoclassate?
perché non si vuole creare una sottoclasse 'bool'? È possibile creare sottoclassi '10' per rappresentare ogni possibile stato booleano. – jamylak
Grazie a @Martijn, sembra una domanda strettamente correlata. Non è comparso durante la mia ricerca SO (avrei dovuto pensare di aggiungere "finale" ai termini di ricerca). – alexis