【Python】重写一个类的布尔判断值

重写一个类的布尔判断值

有时会需要自定义的控制一个对象的布尔判断值,有两个方案可以实现

重写 __nonzero__ 方法或者重写 __zero__ 方法

1. 重写 __nonzero__ 方法

Python 2.7 可以,3.7 不行

class TrueBool(object):
    """布尔值为真举例"""

    def __nonzero__(self):
        return True  # 1 也行,一个 bool 值为真的就可以


class FalseBool(object):
    """布尔值为假举例"""

    def __nonzero__(self):
        return False  # 0 也行,一个 bool 值为假的就可以


if __name__ == '__main__':
    print(bool(TrueBool()))
    print(bool(FalseBool()))

2. 重写 __len__ 方法

Python 2/3 都可以

class TrueBool:
    """布尔值为真举例"""

    def __len__(self):
        return 1  # 一个 bool 值为真的就可以


class FalseBool:
    """布尔值为假举例"""

    def __len__(self):
        return 0  # 一个 bool 值为假的就可以


if __name__ == '__main__':
    print(bool(TrueBool()))
    print(bool(FalseBool()))
发布了52 篇原创文章 · 获赞 143 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/lnotime/article/details/102786052