gpt4 book ai didi

python - issubclass(C, Mapping) 未按预期运行

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:47 24 4
gpt4 key购买 nike

from collections import *
class C(object):
def __iter__(self): pass
def __contains__(self, i): pass
def __len__(self): pass
def __getitem__(self, i): pass
issubclass(C, Mapping) => False
[issubclass(C, cls) for cls in Mapping.__mro__] => [False, True, True, True, True]

即C 确实实现了 Sized、Iterable 和 Container。

我本以为就像 issubclass(C, Sized) 检查是否存在 __len__ 方法一样,issubclass(C, Mapping) 会检查每个直接父类(super class)所需的三个方法是否存在?

最佳答案

collections.Mapping 是一个混合类,提供方法 __contains__(), keys(), items( )values()get()__eq__()__ne__() 如果您提供方法 __len__()__iter__()__getitem__() 的定义。不过,要使其正常工作,您需要从 Mapping 派生。

如果不想从Mapping派生,也可以自己定义上面所有的方法,然后使用

Mapping.register(C)

使 issubclass(C, Mapping) 为真。

关于python - issubclass(C, Mapping) 未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10822276/

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