这个问题建立在许多假设之上.如果一个假设是错误的,那么整个事情就会失败.我还是相对较新的Python,刚刚进入了好奇/探索阶段.
我的理解是Python不支持创建不能被子类化的类(最终类).但是,在我看来,Python 中的bool类不能被子类化.当考虑bool类的意图时,这是有道理的(因为bool只应该有两个值:true和false),我很满意.我想知道的是这个课程是如何被标记为最终的.
所以我的问题是: Guido如何设法阻止bool的子类化?
>>> class TestClass(bool):
pass
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
class TestClass(bool):
TypeError: type 'bool' is not an acceptable base type
Run Code Online (Sandbox Code Playgroud)
相关问题: 为什么我不能在Python中扩展bool?
我试图继承xrange(使用in以及迭代来实现成员资格测试)。但我收到以下错误消息:
TypeError: Error when calling the metaclass bases
type 'xrange' is not an acceptable base type
Run Code Online (Sandbox Code Playgroud)
有什么特别之处xrange?
在/tmp/spam.py:
n = 69
if n == True:
print 'potato'
Run Code Online (Sandbox Code Playgroud)
pep8实用程序抱怨这个条件:
wim@SDFA100461C:/tmp$ pep8 spam.py
spam.py:3:6: E712 comparison to True should be 'if cond is True:' or 'if cond:'
Run Code Online (Sandbox Code Playgroud)
对于您确实想要检查相等性的情况,最佳做法是什么True?True使用isOK进行身份检查吗?为什么pep8实用程序提供了一种在pep8本身明确不鼓励的替代方案?