为了账号安全,请及时绑定邮箱和手机立即绑定

为什么bool是int的子类?

为什么bool是int的子类?

SMILET 2019-08-13 15:56:56
为什么bool是int的子类?当通过python-memcached在memcached中存储bool时,我注意到它以整数形式返回。检查库的代码向我显示有一个地方isinstance(val, int)被检查以将值标记为整数。所以我在python shell中测试了它并注意到以下内容:>>> isinstance(True, int)True>>> issubclass(bool, int)True但为什么究竟是bool一个子类int呢?它有点意义,因为布尔值基本上是一个int,它可以只取两个值,但它需要比实际整数少得多的操作/空间(没有算术,只有一点存储空间)....
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

参见PEP 285 - 添加bool类型。相关段落:

6)bool应该继承自int吗?

=>是的。

在理想的世界中,bool可能更好地实现为一个知道如何执行混合模式算术的单独整数类型。但是,从int继承bool可以极大地简化实现(部分原因是所有调用PyInt_Check()的C代码都将继续工作 - 这对于int的子类返回true。


查看完整回答
反对 回复 2019-08-13
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

也可以help用来检查Bool控制台中的值:

帮助(真)

help(True)Help on bool object:class bool(int)
 |  bool(x) -> bool |  
 |  Returns True when the argument x is true, False otherwise.
 |  The builtins True and False are the only two instances of the class bool.
 |  The class bool is a subclass of the class int, and cannot be subclassed.
 |  
 |  Method resolution order:
 |      bool |      int |      object |

帮助(假)

help(False)Help on bool object:class bool(int)
 |  bool(x) -> bool |  
 |  Returns True when the argument x is true, False otherwise.
 |  The builtins True and False are the only two instances of the class bool.
 |  The class bool is a subclass of the class int, and cannot be subclassed.
 |  
 |  Method resolution order:
 |      bool |      int |      object


查看完整回答
反对 回复 2019-08-13
  • 3 回答
  • 0 关注
  • 754 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信