Хотя a module (as suggested by mgilson) является лучшим вариантом, если вы действительно есть хорошо использовать для этого (я не могу думать об одном), это относительно легко с the inspect
module и класс декоратора:
import inspect
def staticmethods(cls):
for name, method in inspect.getmembers(cls, inspect.ismethod):
setattr(cls, name, staticmethod(method.__func__))
return cls
@staticmethods
class Test:
def test():
print("Test")
Test.test()
Все класс декоратора делает цикл с помощью методов на объекте с inspect.getmembers()
, а затем переписывает функцию с staticmethod()
исходной функции (несвязанного).
Обратите внимание, что я использовал бы модуль над классом для этого и, вероятно, также просто вручную вызывал @staticmethod
для каждой функции, выполняя ее таким образом (так как это, например, прерывает проверки моего редактора). Этот ответ дается, чтобы показать, что это возможно, потому что это довольно простая реализация.
Спасибо, это то, что я хочу – Neil