【发布时间】:2013-04-17 09:36:42
【问题描述】:
我在python docs看到了以下内容:
bool([x])
使用标准真值测试程序将值转换为布尔值。如果 x 为假或省略,则返回 False;否则它 返回真。 bool 也是一个类,它是 int 的子类。 类 bool 不能被进一步子类化。 它的唯一实例是 False 和 没错。
我这辈子从没想过继承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,即防止它们被子类化吗?
【问题讨论】:
-
你为什么不想继承
bool?您可以创建10子类来表示每个可能的布尔状态。 -
感谢@Martijn,这看起来确实是一个密切相关的问题。它在我的 SO 搜索过程中没有出现(我应该考虑在搜索词中添加“final”)。