我想创建一个继承自的类None。
None
试过这个:
class InvalidKeyNone(None): pass
但这给了我:
TypeError: Error when calling the metaclass bases cannot create 'NoneType' instances
什么能给我一个类型完全一样None但可以测试的类型的正确解决方案呢?
foo = InvalidKeyNone() print(type(foo)) >>> InvalidKeyNone
[编辑]
我想这样做是因为我正在针对Python数据结构创建选择方案:
bar = select(".foo.bar.[1].x", {"foo":{"bar":[{"x":1}, {"x":2}], "baz":3}) print(bar) >> 2
而且我希望能够确定是否由于选择的值为“无”或因为找不到键而得到“无”。但是,它必须返回行为完全像None的(鸭型)None。没有异常或自定义类型返回此处。
好的,共识是:无法完成。尽管不尽人意是一个有效的答案。由于我真的希望默认行为在不存在键时将其返回None,所以我认为我将在适当的时候让select eat参数转换为异常抛出。谢谢。
None是一个常量,唯一的值types.NoneType(对于v2.7,对于v3.x)
types.NoneType
无论如何,当您尝试从 types.NoneType
from types import NoneType class InvalidKeyNone(NoneType): pass foo = InvalidKeyNone() print(type(foo))
你会得到这个错误
Python 2 TypeError:调用元类基本类型“ NoneType”时出错,这是不可接受的基本类型 Python 3 ImportError:无法导入名称“ NoneType”
Python 2
TypeError:调用元类基本类型“ NoneType”时出错,这是不可接受的基本类型
Python 3
ImportError:无法导入名称“ NoneType”
简而言之,您不能继承 NoneType
NoneType
无论如何,为什么要一个类继承NoneType?