Класс, который возвращает 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
Другие вопросы по тегам