gpt4 book ai didi

python - 如何继承Python None

转载 作者:太空狗 更新时间:2023-10-29 18:14:44 26 4
gpt4 key购买 nike

我想创建一个继承自 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 还是因为找不到 key 。但是它必须返回一个(ducktyped)None,它的行为与 None 完全一样。此处没有异常或自定义类型返回。

[编辑]

好的,所以共识是:做不到。虽然不令人满意,但这是一个有效的答案。因为我真的希望默认行为让它在键不存在时返回 None 我想我会让 select 吃一个参数以在适当的时候切换到异常抛出。谢谢。

最佳答案

Noneconstant , types.NoneType 的唯一值(对于 v2.7 ,对于 v3.x )

无论如何,当您尝试从 types.NoneType 继承时

from types import NoneType

class InvalidKeyNone(NoneType):
pass

foo = InvalidKeyNone()
print(type(foo))

你会得到这个错误

Python 2

TypeError: Error when calling the metaclass bases type 'NoneType' is not an acceptable base type

Python 3

ImportError: cannot import name 'NoneType'

简而言之,您不能继承自 NoneType

无论如何,为什么要让一个类继承NoneType

关于python - 如何继承Python None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17424516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com