Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > О декораторах просто


Автор: YahоО 3.11.2022, 16:37
В книге "Python экспресс курс" имеется пример:  

Код

class Circle:
  all_circles = []
  def __init__(self, radius=1):
     self.radius = radius
     self.__class__.all_circles.append(self)
  def area(self):
     return self.radius * self.radius * 3.14159   
  @staticmethod
  def total_area():
     total = 0
     for c in Circle.all_circles:
        total = total + c.area()
     return total

c = Circle(3)
print(c.area())
print(Circle.total_area())

c3 = Circle(30)
print(c3.area())
print(Circle.total_area())


в нем не понятно одно единственное: почему если закомментировать строку 
# @staticmethod
то пример все равно печатает правильный результат?
Другими словами что есть запись про статические методы, что нет такой записи, все работает правильно и результат один и тот же, тогда зачем писать @staticmethod ?

Может данный пример не совсем подходит для демонстрации staticmethod,
или в нынешней версии Python 3.10 имеется что то отличное от описанного в книге 2019 года выпуска?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)