fork download
  1. class A: pass
  2. class B(A): pass
  3. class C: pass
  4. class D(B): pass
  5. class E(B, C): pass
  6.  
  7. def lca_type(classes):
  8. last_parent = None
  9. for parents in zip(*(reversed(cls.mro()) for cls in classes)):
  10. if len(set(parents)) > 1:
  11. break
  12. last_parent = parents[0]
  13. return last_parent.__name__
  14.  
  15. print(lca_type({D, E}))
Success #stdin #stdout 0.02s 9220KB
stdin
Standard input is empty
stdout
object