我有一个这样的python代码。

名为 mymodule.py 的文件

class MyBase(object):
    pass

名为 data.py 的文件
from mymodule import MyBase

class A:
    class NestA(MyBase):
        pass
    class NestB(MyBase):
        pass

class B:
    class NestA(MyBase):
        pass
    class NestB(MyBase):
        pass

如果我有 a = A.NestA (不是它指的是一个类,a 不是类 NestA 的对象而是类本身)我如何找出 a 属于哪个嵌套类层次结构?一种。 名称 给了我 NestA,所以这不是问题。我想找出 NestA 属于哪个外部类,即 A 类或 B 类。我该怎么做?

最佳答案

您可以使用检查模块执行此操作:

import inspect

a = A.NestA

print a in [x[1] for x in inspect.getmembers(A, inspect.isclass)]
print a in [x[1] for x in inspect.getmembers(B, inspect.isclass)]

结果:
True
False

附录:

如果您对模块中的类一无所知,您可以回溯并获取模块。
# for each class in a's module...
for klass in inspect.getmembers(inspect.getmodule(a), inspect.isclass):
    # see if a is in that class
    if a in [x[1] for x in inspect.getmembers(klass[1], inspect.isclass)]:
        print a, "is a member of", klass[0]

结果:
__main__.NestA is a member of A

关于python - 如何找出嵌套的类层次结构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1806812/

10-10 21:47