使用bool返回False的类(TheClassItself)

Edu*_*rdo 15 python metaclass python-3.x

我想创建一个类MyClass,其中bool(MyClass)返回False.可能吗?

我希望这个行为与类本身,而不是该类的对象.对于那个班级的对象,我知道我可以return False进入__bool__(self).

Oli*_*çon 30

要定义__bool__类(而不是其实例)使用的方法,您需要修改类.你通过编写元类来做到这一点.

class FalseMeta(type):
    def __bool__(self):
        return False

class MyClass(metaclass=FalseMeta):
    pass

print(bool(MyClass))  # False
Run Code Online (Sandbox Code Playgroud)

  • 对于任何来到这里寻找Python 2解决方案的人的参考,[this](http://python-future.org/compatible_idioms.html#metaclasses)是Python 2中的等效元类语法,你可以使用`__nonzero__ `而不是`__bool__` (3认同)