Почему мы используем @staticmethod?Python

Программы на Python
Ответить
Anonymous
 Почему мы используем @staticmethod?

Сообщение Anonymous »

Я просто не понимаю, зачем нам использовать @staticmethod. Начнем с примера.

Код: Выделить всё

class test1:
def __init__(self,value):
self.value=value

@staticmethod
def static_add_one(value):
return value+1

@property
def new_val(self):
self.value=self.static_add_one(self.value)
return self.value

a=test1(3)
print(a.new_val) ## >>> 4

class test2:
def __init__(self,value):
self.value=value

def static_add_one(self,value):
return value+1

@property
def new_val(self):
self.value=self.static_add_one(self.value)
return self.value

b=test2(3)
print(b.new_val) ## >>> 4
В приведенном выше примере метод static_add_one в двух классах не требует экземпляра класса (self) при вычислении.
Метод static_add_one в классе test1 декорирован @staticmethod и работает правильно.
Но в то же время метод static_add_one в классе test2 который не имеет оформления @staticmethod, также работает правильно, используя трюк, который предоставляет self в аргументе, но не использует его вообще.
Итак, в чем же преимущество использования @staticmethod? Улучшает ли это производительность? Или это просто заслуга дзен Python, который гласит: «Явное лучше, чем неявное»?

Подробнее здесь: https://stackoverflow.com/questions/235 ... aticmethod
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»