Класс, который возвращает False с помощью bool (TheClassItself) - PullRequest
0 голосов
/ 27 мая 2018

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

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

1 Ответ

0 голосов
/ 27 мая 2018

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

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

class MyClass(metaclass=FalseMeta):
    pass

print(bool(MyClass))  # False
...