gpt4 book ai didi

python - 类生成器定义

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:38 25 4
gpt4 key购买 nike

为什么 inspect.isgenerator() 为此类生成器定义返回 false(在 python 3.7 中工作)?

我知道 isgenerator 正在检查 weather 对象的类型

"generator" 

我的类(class)是

"__main__.generator" 

我不知道为什么。我如何使它成为“发电机”类型? (我需要这个,因为其他第三个图书馆正在检查这个)。

class generator(object):
def __init__(self):
pass
def __getitem__(self, index):
return [0,0]

def __iter__(self):
return self

def __next__(self):
return [0,0]

def next(self):
return self.__next__()

a = generator()

import inspect
print(inspect.isgenerator(a))
print(type(a))

感谢您的帮助!

最佳答案

“Generator”是一个特定的内置类型,你的类型永远不会是那个类型,不管你实现什么方法或者给它起什么名字。你不能让你的类的实例成为实际的生成器。 (即使通过子类化也不行——真正的生成器类型不能被子类化。)此外,生成器具有用于 coroutine functionalitysendthrow 方法。 ,但是你的类拥有这些没有意义,实现它们仍然不会使你的对象通过 inspect.isgenerator

inspect.isgenerator 旨在检查实际的生成器,而不是任意迭代器或模仿生成器的对象。

如果您使用的第三方库需要一个真正的生成器,您必须通过编写和调用生成器函数或编写生成器表达式来为其提供一个实际的生成器。

如果第三方库实际上不需要任何特定于生成器的内容,您可以提出问题,要求他们切换到比 inspect.isgenerator 限制性更小的检查。

关于python - 类生成器定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58557064/

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