組み込み関数 super
super(クラス名type1[, インスタンスobject or クラス名type2])クラスtype1のスーパークラスを返します。主な使い方は"super(type, object)"です。当然objectはtypeのインスタンスでなければなりません。もう一つの使い方"super(type1,type2)の場合はtype2はtype1のサブクラスでなければいけません。
例をみてみてください。
#coding: shift-jis
class A(object):
def method(self):
print "I'm A class"
class B(A):
def method(self):
super(B, self).method()
print "I'm B class"
class C(B):
def method(self):
super(C, self).method()
print "I'm C class"
objA = A()
objB = B()
objC = C()
print "A classのメソッド"
objA.method()
print "B classのメソッド"
objB.method()
print "C classのメソッド"
objC.method()
print "super(type,type)の使い方"
meth = super(C,C).method
meth(objC)
print "super(type)の使い方"
class D(C):
sup = super(B)
objD = D()
objD.sup.method()
raw_input()
出力画面:
A classのメソッド
I'm A class
B classのメソッド
I'm A class
I'm B class
C classのメソッド
I'm A class
I'm B class
I'm C class
super(type,type)の使い方
I'm A class
I'm B class
super(type)の使い方
I'm A class
super(type,type)、super(type)の使い方は必要なの?自分でいろいろ実験してみてなんとか動くコードを見つけました。webで検索してみたけれど、super(type,type)、super(type)の有意義な使い方が見つけられなかったです。やっぱりクラスの定義中で使用するくらいしかないのではないかと思います。