我在python 文档中遇到了以下内容:
布尔([x])
使用标准真值测试程序将值转换为布尔值。如果 x 为假或省略,则返回 False;否则返回 True。bool 也是一个类,它是 int 的子类。类 bool 不能进一步子类化。它的唯一实例是 False 和 True。
我这辈子从没想过 subclass bool
,但我自然而然地立即尝试了它,果然:
>>> 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
那么问题来了:这是怎么做到的?我可以应用相同的技术(或不同的技术)将我自己的类标记为final
,即防止它们被子类化吗?