Зачем в питоне нужен @staticmethod
📁 декоратор, метод, python, ии
Есть класс printer. У него есть 2 метода, делающие одно и то же. Различие в том, что один из методов - с декоратором @staticmethod, а другой - без. Но я могу вызывать оба метода без создания экземпляра класса.
class printer(): ''' Тест @staticmethod ''' def not_static_print(self, text = 'Example Text'): print(text) @staticmethod def static_print(text = 'Example Text'): print(text)# Не создаю никаких экземпляровprinter.not_static_print(None, 'Emm?')printer.static_print('Something like this.')Просто для not_static_print() я указываю экземпляр, а точнее его отсутствие (None)
Есть ли принципиальная разница в использовании этих методов?
@staticmethod используется в том случае, когда ваш метод не имеет никакого доступа к тому, что представляет собой класс или объект класса. Он не принимает никаких обязательных аргументов, по типу объекта класса или самого класса.
В первом Вашем методе передается параметр self, который может быть использован далее в коде(хоть вы его и не используете), в варианте с @staticmethod обратиться к классу либо же объекту не выйдет никак. Вызывается он так же, как и обычный метод.
Более подробно можно почитать тут:
Войдите чтобы оставить ответ
Блоги
Функциональное программирование в PHP: от основ до практики
SOLID принципы в PHP: теория и практика — полное руководство