gpt4 book ai didi

python - 相当于函数对象的 isinstance

转载 作者:太空宇宙 更新时间:2023-11-03 15:54:33 24 4
gpt4 key购买 nike

我正在更改单元测试涵盖的一些代码。在单元测试中会发生这样的事情:

def create_object(cls, arg1=None, arg2=None, arg3=None, **kwargs):
kwargs['arg1'] = arg1 or DEFAULT1
kwargs['arg2'] = arg2 or DEFAULT2
kwargs['arg3'] = arg3 or DEFAULT3
return cls(kwargs)

基本上是一堆允许我们在编写测试时使用速记的东西。

我刚刚完成了一次重构,这意味着传入的一些未实例化的对象类需要一个非 kwarg 参数。重构在代码主体中有意义,但会导致测试失败。

鉴于我不想从头开始重写所有失败的测试,最简单的解决方案是这样的

if isinstance(cls, Foo):
return cls(kwargs, True)
else:
return cls(kwargs)

这当然会失败,因为 cls 实际上并不是 Foo 实例的任何实例。

目前,我有一个 hacky 解决方案,其中包括向 kwargs 添加一个标志,然后检查它是否存在,如果存在,则从列表中popping它。

是否有更好的方法来检查函数对象是否会返回另一个类的实例?

最佳答案

听起来你想要

issubclass(cls, Foo)

关于python - 相当于函数对象的 isinstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40924585/

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