有沒有辦法找到staticmethod所屬類的名稱?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'
對於類方法,我可以通過A.my_classmethod.im_self.__name__
獲取類的名字,但我無法弄清楚一個靜態方法。
有什麼想法? 謝謝。
嗯,實際上這是我正在嘗試做的。 我想做2個函數來「序列化/反序列化」一個函數/ classmethod/staticmethod。
這意味着,有人可以將函數傳遞到序列化函數並獲取字符串。
a_string = serialize(A.my_classmethod)
此字符串可以存儲在數據庫例如.. 然後,該字符串應該足以解決函數可以調用它:
# later on...
f = deserialize(a_string)
# I can use my function
f(...)
我可以使它工作對於一個函數或類方法,但不是靜態方法,因爲我無法弄清它所屬的類,並使用getattr ...
可能重複[在python中如何獲取其靜態方法中的類的名稱](http://stackoverflow.com/questions/4691925/in-python-how-to-get-name-of-a- class-inside-its-static-method) – BrenBarn 2012-07-28 20:51:52
基本上靜態方法的要點是它與其類沒有關係。如果你想知道它在什麼類,不要使用靜態方法。 – BrenBarn 2012-07-28 20:52:40
這裏也重複:http://stackoverflow.com/questions/949259/how-do-i-infer-the-class-to-which-a-staticmethod-belongs – gnr 2012-07-28 20:55:42