私は、オーバーロードされたメソッドまたは新しく定義されたメソッドとは別に、継承されたメソッドを伝えたいと思います。それはPythonで可能ですか?継承されたメソッドをPythonで識別する方法はありますか?
例:
class A(object):
def spam(self):
print 'A spam'
def ham(self):
print 'A ham'
class B(A):
def spam(self):
print 'Overloaded spam'
def eggs(self):
print 'Newly defined eggs'
目的の機能:
>>> magicmethod(B.spam)
'overloaded'
>>> magicmethod(B.ham)
'inherited'
>>> magicmethod(B.eggs)
'newly defined'
は、例のように「魔法の方法」、またはメソッドの実装のこれらのタイプを見分ける方法はありますか?
これはOOPの奇妙な要件であることを歓迎します。 – Pengman
これは特殊なケースです。オブジェクトをサブクラス化せずに拡張する必要がある場合があります。メソッドの1つを単にオーバーライドできるかどうか、または既存のオーバーライドメソッドを保持する必要があるかどうかをチェックする必要があります。したがって、デバッグ/解析目的ではないにしても、それはオブジェクトインスペクタです。 これは必ずしも良い考えではないかもしれませんが、この場合は正当だと思います。考えられる設計上の欠陥を指摘してくれてありがとう。 –