Multiple inheritance - How to call method_x in InheritedBaseB from method_x in InheritedBaseA?
The Music Guy
musicguy at alphaios.net
Mon Sep 7 01:48:38 EDT 2009
Sorry, that last code had a typo in it:
#!/usr/bin/python
def main():
foox = FooX()
fooy = FooY()
fooz = FooZ()
foox.method_x("I", "AM", "X")
print
fooy.method_x("ESTOY", "Y", "!")
print
fooz.method_x(100, 200, 300)
class MyMixin(object):
def method_x(self, a, b, c):
super(MyMixin, self).method_x(a, b, c)
print "MyMixin.method_x(%s, %s, %s, %s)" % (repr(self),
repr(a), repr(b), repr(c))
class BaseA(object):
def method_x(self, a, b, c):
super(BaseA, self).method_x(a, b, c)
print "BaseA.method_x(%s, %s, %s, %s)" % (repr(self), repr(a),
repr(b), repr(c))
class BaseB(object):
pass
class BaseC(object):
def method_x(self, a, b, c):
super(BaseC, self).method_x(a, b, c)
print "BaseC.method_x(%s, %s, %s, %s)" % (repr(self), repr(a),
repr(b), repr(c))
class FooX(BaseA, MyMixin):
def method_x(self, a, b, c):
super(FooX, self).method_x(a, b, c)
print "FooX.method_x(%s, %s, %s, %s)" % (repr(self), repr(a),
repr(b), repr(c))
class FooY(BaseB, MyMixin):
pass
class FooZ(BaseC, MyMixin):
def method_x(self, a, b, c):
super(FooZ, self).method_x(a, b, c)
print "FooZ.method_x(%s, %s, %s, %s)" % (repr(self), repr(a),
repr(b), repr(c))
if __name__ == '__main__':
main()
Traceback (most recent call last):
File "foo.py", line 54, in <module>
main()
File "foo.py", line 8, in main
foox.method_x("I", "AM", "X")
File "foo.py", line 40, in method_x
super(FooX, self).method_x(a, b, c)
File "foo.py", line 24, in method_x
super(BaseA, self).method_x(a, b, c)
File "foo.py", line 18, in method_x
super(MyMixin, self).method_x(a, b, c)
AttributeError: 'super' object has no attribute 'method_x'
More information about the Python-list
mailing list