如何为自定义数据类型定义`bool`转换?

时间:2016-04-06 15:15:26

标签: python numpy

我正在使用新类型扩展Python,并查看Python手册的New Types部分,我看不到bool转换的任何内容。如何指定我的类型如何转换为bool?

例如,在下面的示例中,native bumpy type to以某种方式被解释为Python bool

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

查看字节码,这与POP_JUMP_IF_FALSE相对应,但这对跟踪转换逻辑似乎没什么用。

1 个答案:

答案 0 :(得分:4)

在Python文档的Special Method Names下,您可以看到.__bool__()方法正是这样做的。

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

如果你仍然坚持使用Python 2.x(哀悼!),那么方法名称为__nonzero__而不是__bool__