Существуют ли в Python статические метода? Если да, то как их нужно объявлять при написании класса?
Под статическими методами я подразумеваю методы вызов которых разрешён напрямую на классе, а не на его экземпляре (например, MyClass.Method()
: MyClass - это имя класса)
class MyClass(object):
@staticmethod
def my_method():
print("I'm static method")
MyClass.my_method()
I'm static method
Собственно, @staticmethod - декоратор.
без него можно было бы указать, что
my_method = staticmethod(my_method)
(Python 3)
В принципе, исходя из того, что по существующему соглашению в методах класса первый параметр функции - это ссылка на сам объект этого класса (self), можно вызвать нестатический метод как статический, передав сам класс:
class MyClass3(object):
def my_method(self, stroka):
return stroka
print(MyClass3.my_method(MyClass3, 'Что-нибудь выводим...'))
Что-нибудь выводим...
Может, подойдет...