Класс, который возвращает 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