Я хочу создать класс MyClass, где bool(MyClass) возвращает False.Возможно ли это?
MyClass
bool(MyClass)
False
Я хочу такое поведение с самим классом, а не с объектами этого класса.Для объектов этого класса я знаю, что я могу просто return False в __bool__(self).
return False
__bool__(self)
Чтобы определить метод __bool__, используемый классом, а не его экземплярами, вам необходимо изменить его класс .Вы делаете это, написав метакласс .
__bool__
class FalseMeta(type): def __bool__(self): return False class MyClass(metaclass=FalseMeta): pass print(bool(MyClass)) # False