Задача по вычислению площади
Смотрю видео по ооп на ютубе и там предложили вот такую задачу для самопроверки:
Объявите класс Rectangle, в котором имеется статический метод, вычисляющий площадь прямоугольника. Этот метод принимает два параметра (ширину и длинну) , вызывается в конструкторе для вычисления площади конкретного прямоугольника и результат присваивается локальному свойству создаваемого экземпляра класса.
Я накидал немного кода, на что ума хватило) Но я совершенно не понял кусочек задачи, выделенный жирным шрифтом.
Если вас не затруднит, не могли бы вы, пожалуйста, написать как это должно выглядить? По возможности как-нибудь по проще, т.е. без всяких наворотов, т.е. как если бы это писал кто-то моего уровня, а то боюсь я иначе совсем не пойму. Заранее огромное спасибо!
P.S. Ниже прилагаю начало моего кода:
class Rectangle:
def __init__(self, w, h):
self.w = w #ширина
self.h = h #длинна
@staticmethod
def square(w, h):
wh = w * h # вычисление площади
Ответы (3 шт):
не уверен, что правильно понял ваше задание, но предложу попробовать следующее:
class Rectangle:
def __init__(self, w, h):
self.w = w # ширина
self.h = h # длинна
def __str__(self):
return "площадь прямоугольника({}x{}) = {}"\
.format(self.w, self.h, self.square(self.w, self.h))
@staticmethod
def square(w, h):
wh = w * h # вычисление площади
return wh
rectangle = Rectangle(2, 3)
print(rectangle)
Из выделенного текста можно вынести три вещи:
статически метод должен возвращать какое-то значение
вызов этого метода должен осуществляться в конструкторе
результат вызова должен присвоиться в поле создаваемого экземпляра (self)
class Rectangle: def __init__(self, w, h): self.w = w #ширина self.h = h #длинна self.wh = Rectangle.square(w, h) @staticmethod def square(w, h): return w * h # вычисление площади
Вот так это делается (по-хорошему бы еще проверку на положительность длины и ширины добавить):
class Rectangle:
def __init__(self, w, h):
self.w = w #ширина
self.h = h #длинна
self.area = self.calc_area(self.w, self.h)
@staticmethod
def calc_area(w, h):
return w*h
@property
def area(self):
return self.__area
@area.setter
def area(self, val):
self.__area = val