super
タイトルが示すように、の引数の順序をどのように覚えていますか? 私が見逃したニーモニックはありますか?
何年ものPythonプログラミングの後、私はまだ調べなければなりません:(
(記録のために、それはですsuper(Type, self)
)
継承というと分類階層を思い浮かべます。への引数の順序super
は階層的です。最初にクラス、次にインスタンスです。
~unutbu からの回答に触発された別のアイデア:
class Fubb(object):
def __init__(self, *args, **kw):
# Crap, I can't remember how super() goes!?
super()
正しい通話 を構築するための手順。
__init__(self, *args, **kw) # Copy the original method signature.
super(Fubb).__init__(self, *args, **kw) # Add super(Type).
/
-------
/
super(Fubb, self).__init__(*args, **kw) # Move 'self', but preserve order.
self
はオプションsuper(Type)
であり、バインドされていないスーパークラス メソッドへのアクセスを提供し、オプションの引数は常に最後に来ることを覚えておいてください。
私はしません。Python 3 では、次のように書くことができます。
super().method(params)
通常、定義super
内で使用されます。class
そこでは、(これも通常) への最初の引数super
は常に の名前である必要がありclass
ます。
class Foo(object):
def __init__(self,*args,**kw):
super(Foo,self).__init__(*args,**kw)