0

我有一个像下面这样的设置,其中B是内部类和A外部类:

class A:
  # some A stuff
  class B:
    # Some B stuff

如果我有一个B实例:

b = B()

我怎样才能上课A

换句话说,我想要类似的东西type(b),通常会给出 class B,而不是 getb的 external class A

编辑

我发现__qualname__如果你这样做,type(b). __qualname__ 你会得到字符串“AB”。虽然很接近,但我不认为从字符串中我可以得到外部类本身。

4

1 回答 1

0

除非您手动执行类似的操作,否则没有对“父”类的引用(因为它们只是分配给类对象的命名空间)

from enum import Enum
class A:
  class B(Enum):
    X = 1

A.B.parent = A

你当然可以编写一个类装饰器,它遍历它所装饰的类的所有成员,如果它们是类,用这样的属性注释它们,带你到

from enum to Enum

@annotate_subclasses  # Implementation elided :)
class A:
  class B(Enum):
    ...
于 2020-09-30T11:29:45.103 回答