修复继承n

2024-03-28 18:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

class A : pass
class B : pass
class C(A) : pass
class D(A,B) : pass
class E(A) : pass
class F(C,D) : pass
class G(B) : pass
class H(E,F,G) : pass

o=H(),我需要为H绘制完整的继承网络。此外,我还需要指出在它的所有类中搜索属性的顺序。你知道吗

下面是我画的图:

enter image description here

我不确定我的订单是否正确。有人能帮我修一下吗?你知道吗


Tags: 订单网络属性顺序绘制passclass
1条回答
网友
1楼 · 发布于 2024-03-28 18:30:42

type.mro()会给你下命令:

>>> type.mro(H)
[__main__.H,
 __main__.E,
 __main__.F,
 __main__.C,
 __main__.D,
 __main__.A,
 __main__.G,
 __main__.B,
 object]

如您所见,您的编号有许多错误。
如果需要层次结构,则可以使用inspect

>>> import inspect
>>> inspect.getclasstree(inspect.getmro(H))
[(object, ()),
 [(__main__.A, (object,)),
  [(__main__.C, (__main__.A,)),
   [(__main__.F, (__main__.C, __main__.D)),
    [(__main__.H, (__main__.E, __main__.F, __main__.G))]],
   (__main__.D, (__main__.A, __main__.B)),
   [(__main__.F, (__main__.C, __main__.D)),
    [(__main__.H, (__main__.E, __main__.F, __main__.G))]],
   (__main__.E, (__main__.A,)),
   [(__main__.H, (__main__.E, __main__.F, __main__.G))]],
  (__main__.B, (object,)),
  [(__main__.D, (__main__.A, __main__.B)),
   [(__main__.F, (__main__.C, __main__.D)),
    [(__main__.H, (__main__.E, __main__.F, __main__.G))]],
   (__main__.G, (__main__.B,)),
   [(__main__.H, (__main__.E, __main__.F, __main__.G))]]]]

相关问题 更多 >