簡體   English   中英

python - 如何引用在 function 中聲明的 Class

[英]python - how to reference Class declared inside a function

我正在使用的第三方庫中有一個 Class。

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

我有一個 ClassA a實例

type(a)

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

如何檢查變量是否是 ClassA 的實例? 我不確定如何引用 ClassA,因為它位於 function....

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

如果您無法更改funcA本身,因為它不在您自己的代碼中,那么測試實例的一種巧妙方法是給它一個超類並測試超類。 用一個包裝的版本替換funcA ,它使用 class 調用原始funcA ,擴展base和您自己的ClassABase

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM