python 如何定义自定义数据类型的'bool'转换?[duplicate]

b5buobof  于 2023-01-16  发布在  Python
关注(0)|答案(1)|浏览(116)
    • 此问题在此处已有答案**:

Boolean value of objects in Python(2个答案)
15小时前关门了。
我正在用一个新类型扩展Python,在Python手册的New Types一节中我没有看到任何关于bool转换的内容。我如何指定我的类型如何转换成bool?
例如,在下面的示例中,本机numpy类型to被解释为Python bool

import numpy as np
if (np.array(False)):
  print 'hi'
else:
  print 'hey'

看看字节码,它对应于POP_JUMP_IF_FALSE,但这似乎对跟踪转换逻辑没有用处。

bzzcjhmw

bzzcjhmw1#

在Python文档中,在特殊方法名称下,你可以看到.__bool__()方法就是这样做的。

class MyType(object):
    def __init__(self, value):
        self.value = value
    def __bool__(self):
        return self.value != 0

如果你仍然使用Python 2.x,那么方法名是__nonzero__而不是__bool__(参见Python 2.7文档)。

相关问题