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