super
を使用して、クラスのスーパークラスのメソッドを取得できないのはなぜですか?Python:なぜクラスで `super`を使うことができませんか?
例:
Python 3.1.3
>>> class A(object):
... def my_method(self): pass
>>> class B(A):
... def my_method(self): pass
>>> super(B).my_method
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
super(B).my_method
AttributeError: 'super' object has no attribute 'my_method'
(もちろんこれは、私はちょうどA.my_method
を行うことができ些細なケースですが、私はダイヤモンド継承の場合のためにこれを必要としていました。)
super
年代によると、私が望んでいるものが可能でなければならないようです。これはsuper
のドキュメントである:(重点鉱山)
super()
- >結合していないスーパーのオブジェクト
super(type, obj)
- -super(__class__, <first argument>)
super(type)
と同じ>>バインドsuper
オブジェクト。必要なもの:isinstance(obj, type)
super(type、type2) - > bound super オブジェクトです。 2番目の引数として渡すためにBのインスタンスを必要としているように見えますissubclass(type2は、 タイプ)
[編集済みの非関連の例]
私は私の答えを削除した - 私は同じエラーを得ました。非常に奇妙な、それをもう少し見ていきます。 –