Очень широкий вопрос, возможно, специфичный для Python.
Многие инструменты IDE, такие как PyCharm, предлагают добавлять декоратор @staticmethod
к функциям, которые не содержат ссылок на self
. Бывают ли случаи, когда функция не должна быть статической, даже если она не имеет ссылки на self
?
self
не делает метод методом экземпляра; все методы являются методами экземпляра, если не украшеныstaticmethod
илиclassmethod
. Как только вы определили, какой тип метода у вас есть, можно предположить, что первый аргумент является экземпляром или классом (или просто обычным аргументом), независимо от его имени. - person chepner   schedule 20.11.2017self
, когда вы объявляетеstaticmethod
в Python, есть ли какие-либо другие опасности? Или это единственная разница между статическим методом и методом экземпляра. Вы можете игнорировать тот факт, что теперь он называется по-другому и т. д. Конечно, если у метода нетself
, то это должно указывать на то, что это не метод экземпляра, верно? Так почему же PyCharm говорит, что это /может быть/ статический метод, а не должен быть? Нужны ли нам когда-нибудь методы экземпляра без self? - person Olaf Szmidt   schedule 20.11.2017self
. Тебе решать. Одна из причин наличия метода экземпляра безself
заключается в том, что вы в настоящее время не используете информацию об экземпляре, но думаете, что вам может понадобиться это в будущем. Еще одна вещь, которую следует учитывать, когда у вас естьstaticmethod
, — есть ли смысл переместить его из класса. - person Paulo Almeida   schedule 20.11.2017