Я хотел бы создать класс, который наследует от None
.Как наследовать от Python Нет
Пробовал так:
class InvalidKeyNone(None):
pass
, но это дает мне:
TypeError: Error when calling the metaclass bases
cannot create 'NoneType' instances
Что было бы правильным решением, которое дает мне тип, который ведет себя так же, как None
но я могу напечатать тест?
foo = InvalidKeyNone()
print(type(foo))
>>> InvalidKeyNone
[EDIT]
Я хочу, чтобы это сделать, потому что я создаю схему выбора на datastructures Python:
bar = select(".foo.bar.[1].x", {"foo":{"bar":[{"x":1}, {"x":2}], "baz":3})
print(bar)
>> 2
И я хочу, чтобы иметь возможность определить, не получаю ли я None потому что выбранное значение равно None или потому, что ключ не найден. ОДНАКО, он должен вернуть (утаенный) Нет, который ведет себя точно так же, как Нет. Никакие исключения или пользовательский тип не возвращаются сюда.
[EDIT]
Итак, консенсус: не может быть сделано. Который, хотя и неудовлетворительный, является верным ответом. Так как я действительно хочу, чтобы поведение по умолчанию заставляло его возвращать None, когда ключ отсутствует, я думаю, что у меня будет выбор, который будет использовать параметр, чтобы переключиться на бросание исключительных ситуаций, когда это необходимо. Благодарю.
Почему вы хотите сделать это? – karthikr
Я так же удивлен, как karthikr, я не вижу смысла.Дайте нам дополнительную информацию об этом – Paco
(Скорее всего) Вы не можете создать экземпляр, потому что 'None' является singleton – karthikr