Код: Выделить всё
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 в классе test1 декорирован @staticmethod и работает правильно.
Но в то же время метод static_add_one в классе test2, который не имеет оформления @staticmethod, также работает правильно, используя трюк, который предоставляет self в аргументе, но не использует его вообще.
Так в чем же польза от использования @staticmethod? Улучшает ли это производительность? Или это просто заслуга дзен Python, который гласит: «Явное лучше, чем неявное»?
Подробнее здесь: https://stackoverflow.com/questions/235 ... aticmethod
Мобильная версия