布尔测试函数重写

Posted zengsf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了布尔测试函数重写相关的知识,希望对你有一定的参考价值。

布尔测试函数重写
格式:
  __bool__
作用:
  用于bool(obj) 函数取值
  用于if语句的真值表达式中
  用于while 语句的真值表达式中
说明:
  1. 当自定义的类内有 __bool__(self) 方法时,以此方法的返回值作为bool(obj) 的返回值
  2. 当不存在__bool__(self) 方法时,bool(x) 返回__len__(self) 方法的返回值是否为零来测试布尔值
  3. 当不存在__len__(self) 方法时,则直接返回True

class MyList:
    def __init__(self, iterable=()):
        self.data = [x for x in iterable]

    def __bool__(self):
        return any(self.data)      #一个为真就返回true,也可以用all

my = MyList([False ,0,0,1])
print(bool(my))
if my:
    print(my, "True")
else:
    print(my, "False")


输出结果:
True
MyList([False, 0, 0, 1]) True

 











以上是关于布尔测试函数重写的主要内容,如果未能解决你的问题,请参考以下文章

递归java - 测试是两个整数之和是不是相等布尔函数

JS常用代码片段-127个常用罗列-值得收藏

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

python 类中的__nozero__ ,__len__ 重写,可以定义对象的布尔值是True or False

添加布尔值(作为整数)[重复]

推进学说代码片段