我正在使用新类型扩展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
相对应,但这对跟踪转换逻辑似乎没什么用。
答案 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__
。