gpt4 book ai didi

python - 如何用 Python 伪造类型

转载 作者:太空狗 更新时间:2023-10-29 17:39:09 25 4
gpt4 key购买 nike

我最近围绕 Python 中的一些 ORM 文档对象开发了一个名为 DocumentWrapper 的类,以透明地向其添加一些功能,而无需以任何方式更改其接口(interface)。

我只有一个问题。假设我有一些 User 对象包含在其中。调用 isinstance(some_var, User) 将返回 False,因为 some_var 确实是 DocumentWrapper 的实例。

有没有办法在 Python 中伪造一个对象的类型,使相同的调用返回 True

最佳答案

您可以使用 __instancecheck__ 魔术方法来覆盖默认的 isinstance 行为:

@classmethod
def __instancecheck__(cls, instance):
return isinstance(instance, User)

仅当您希望您的对象是一个透明包装器时才这样做;也就是说,如果您希望 DocumentWrapper 表现得像 User。否则,只需将包装类作为属性公开即可。

这是 Python 3 的补充;它带有抽象基类。你不能在 Python 2 中做同样的事情。

关于python - 如何用 Python 伪造类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803597/

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