raising an exception when multiple inheritance involves same baseThank

Michael Hines michael.hines at yale.edu
Sun May 25 09:37:15 EDT 2008


Thanks very much, Arnaud. That is exactly the hint I needed. Since it is
not multiple inheritance per se I prohibit but only multiple inheritance
involving more than one HocObject class, I replaced your len(bases) > 1
test with
<code>
    m = False
    for b in bases :
      if hasattr(b, '__mro__'):
        for bb in b.__mro__ :
          if bb == MetaHocObject.ho :
            if m == True:
              raise Exception("Inheritance of multiple HocObject not
allowed")
            m = True

</code>
to get

class A(HocObject): pass

class B(object): pass

class C(): pass

class D(C, B, HocObject): pass # ok

class D(C, A, HocObject): pass # fail

When I fold this idea into my code I may even try to eliminate the class
factory aspect of
class Foo(hclass(h.Vector))
in favor of
class Foo(h.Vector)

Thanks again,
Michael





More information about the Python-list mailing list