staticmethodが属するクラスの名前を見つける方法はありますか?
class A(object):
@staticmethod
def my_staticmethod():
return 'static'
@classmethod
def my_classmethod():
return 'classmethod'
In [2]: A.my_staticmethod
Out[2]: <function utils.my_staticmethod>
In [3]: A.my_classmethod
Out[3]: <bound method type.my_classmethod of <class 'utils.A'>>
In [4]: A.my_classmethod.im_self.__name__
Out[4]: 'A'
classmethodの場合、経由でクラスの名前を取得できますがA.my_classmethod.im_self.__name__
、staticmethodの場合はわかりませんでした。
何か案が?ありがとう。
さて、実際にここに私がやろうとしていることがあります。関数/クラスメソッド/静的メソッドを「シリアル化/逆シリアル化」するために2つの関数を作成しようとしています。
つまり、誰かが関数をシリアル化関数に渡して文字列を取得できるということです。
a_string = serialize(A.my_classmethod)
この文字列は、たとえばDBに格納できます。次に、この文字列は、関数を解決して呼び出すことができるようにするのに十分である必要があります。
# later on...
f = deserialize(a_string)
# I can use my function
f(...)
関数またはclassmethodで機能させることはできますが、staticmethodで機能させることはできません。これは、それが属するクラスを把握してgetattrを使用できないためです...