super()
派生クラスで再定義された基本クラス メソッドを呼び出すために使用されます。クラスがその動作を定義append()
し、メソッドを拡張する場合、 and内でpopleft()
使用するのが合理的です。ただし、この例では から何も再定義していないため、 は必要ありません。super()
append()
popleft()
deque
super()
次の例は、super()
がいつ使用されるかを示しています。
class Queue(deque):
def append(self, a):
# Now you explicitly call a method from base class
# Otherwise you will make a recursive call
super(Queue, self).append(a)
print "Append!!!"
ただし、複数の継承の場合、super()
基本クラスからメソッドを呼び出すことを許可するよりも複雑になります。詳細な理解には、MRO (メソッド解決順序) の理解が必要です。その結果、上記の例でも、通常は次のように記述した方が適切です。
class Queue(deque):
def append(self, a):
# Now you explicitly call a method from base class
# Otherwise you will make a recursive call
deque.append(self, a)
print "Append!!!"