2

Python でメソッドを定義したクラスを取得するにはどうすればよいですか?

例えば

class A(object):
    def meth(self):
        return **get_current_class()**
class B(A):
    def meth(self):
        do_something
        return super(B,self).meth()

>>> b=B()
>>> b.meth() ##that return the class A

b.__class__ は常に b の実際のクラス (つまり B) であるため、メソッドを実際に定義したクラス (つまり A) が必要なので、self.__class__ は役に立ちません。

4

2 に答える 2

0

これをやりたいと思うのは少し奇妙なことであり、非常にハックしないと実行できません。考えられる解決策の 1 つは、メソッドがそれを定義するクラスのメンバーであることを認識すること__dict__です。そのため、MRO を上って、その dict にメソッド名を持つ最初のメソッドを見つけることができます。

def get_class_for_method(self, method_name):
    for cls in self.__class__.mro():
        if method_name in cls.__dict__:
            return cls
于 2013-09-26T12:47:47.773 に答える