python如何引用函数中声明的类

2024-10-03 11:13:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用的第三方库中有一个类

def funcA(base):
    class ClassA(base):
        def __init__(self, obj):
        ....

我有一个ClassAa的实例

type(a)

# prints <class 'path.to.module.funcA.<locals>.ClassA'>

如何检查变量是否是ClassA的实例? 我不知道如何引用ClassA,因为它在一个函数下

import module
isinstance(a, module.funcA.ClassA?) <--- how to reference ClassA?

Tags: topath实例selfobjbaseinitdef
1条回答
网友
1楼 · 发布于 2024-10-03 11:13:30

如果您无法更改funcA本身,因为它不在您自己的代码中,那么测试实例的一个好方法就是给它一个超类,然后测试该超类。将funcA替换为包装版本,该版本使用扩展base和您自己的ClassABase的类调用原始funcA

import functools

class ClassABase:
    pass

def funcAwrapper(f):
    @functools.wraps(f)
    def wrapper(base):
        class WrappedBase(base, ClassABase):
            pass
        return f(WrappedBase)
    return wrapper

funcA = funcAwrapper(funcA)

现在由funcA创建的ClassA的所有实例也将是您自己的ClassABase的实例,因此您可以测试isinstance(obj, ClassABase)

相关问题 更多 >