Класс, который возвращает False с bool (TheClassItself)

Я хочу создать класс MyClass где bool(MyClass) возвращает False. Является ли это возможным?

Я хочу это поведение с самим классом, а не с объектами этого класса. Для объектов этого класса я знаю, что могу просто return False в __bool__(self).

Ответы

Ответ 1

Чтобы определить метод __bool__ используемый классом, а не его экземпляры, вам необходимо изменить его класс. Вы делаете это, написав метакласс.

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

class MyClass(metaclass=FalseMeta):
    pass

print(bool(MyClass))  # False