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

标签 python inheritance python-3.x

例子

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

关于python - 检查类属性是否在给定类中定义或派生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5253397/

相关文章:

python - 获取 ChunkedEncodingError : ('Connection broken: IncompleteRead

c++ - 如何纠正多态性

python - *** ValueError : invalid literal for int() with base 10: '#'

python-3.x - 如何使用 pandas 获取某种格式的表格并导出为 csv?

python - 使用 python django-dashing 从 MySQL 提取数据以显示在仪表板上

python - 如何将Python与Flutter应用程序集成?

python - 变量可以修饰吗?

scala - 在 Scala 中的类型

JavaScript - 动态原型(prototype)模式+寄生组合继承

python - 条件列创建 DF Pandas