Skip to main content
 首页 » 编程设计

python之检查类属性是否在给定类中定义或派生

2025年05月04日9lexus

例子

class A: 
    foo = 1 
 
class B: 
    foo = 2 
 
class C: 
    foo = 3 
 
class D(A, B, C): 
    pass 
 
def collect_foo(cls): 
    import inspect 
    foos = [] 
    for c in inspect.getmro(cls): 
        if hasattr(c, 'foo'): 
            foos.append(c.foo) 
    return foos 

现在 collect_foo(D) 返回 [1, 1, 2, 3] - 1 加倍为 D 派生自 A。问题是 - 如何获得唯一的 foo。我想到的第一件事是检查属性是否在给定类中派生或声明 - 这可能吗?如何做到这一点?

请您参考如下方法:

检查一下

'foo' in c.__dict__ 

代替

hasattr(c, 'foo') 

如果属性是在 c 本身中定义的,这只会产生 True。