Top.Mail.Ru
Ответы

Помогите пожалуйста написать код к этой задаче

Объявите класс RadiusVector2D, объекты которого должны создаваться командами:

v1 = RadiusVector2D() # радиус-вектор с координатами (0; 0)
v2 = RadiusVector2D(1) # радиус-вектор с координатами (1; 0)
v3 = RadiusVector2D(1, 2) # радиус-вектор с координатами (1; 2)
В каждом объекте класса RadiusVector2D должны формироваться локальные приватные атрибуты:

__x, __y - координаты конца вектора (изначально значения равны 0, если не передано какое-либо другое).

В классе RadiusVector2D необходимо объявить два объекта-свойства:

x - для изменения и считывания локального атрибута __x;
y - для изменения и считывания локального атрибута __y.

При инициализации и изменении локальных атрибутов, необходимо проверять корректность передаваемых значений:

- значение должно быть числом (целым или вещественным) в диапазоне [MIN_COORD; MAX_COORD].

Если проверка не проходит, то координаты не меняются (напомню, что при инициализации они изначально равны 0). Величины MIN_COORD = -100, MAX_COORD = 1024 задаются как публичные атрибуты класса RadiusVector2D.

Также в классе RadiusVector2D необходимо объявить статический метод:

norm2(vector) - для вычисления квадратической нормы vector - переданного объекта класса RadiusVector2D (квадратическая норма вектора: x*x + y*y).

P.S. В программе требуется объявить только класс. На экран ничего выводить не нужно.


Для примера:

Тест
r1 = RadiusVector2D()
r2 = RadiusVector2D(1)
r3 = RadiusVector2D(4, 5)

assert hasattr(RadiusVector2D, 'MIN_COORD') and hasattr(RadiusVector2D, 'MAX_COORD'), "в классе RadiusVector2D должны присутствовать атрибуты MIN_COORD и MAX_COORD"
Результат

По дате
По рейтингу
Аватар пользователя
Новичок

Мария, вот ещё Вам программа:

12345678910111213141516171819202122232425262728293031
 class RadiusVector2D: 
    MIN_COORD = -100 
    MAX_COORD = 1024 
    def __init__(self, x = 0, y = 0): 
        if RadiusVector2D.MIN_COORD <= x <= RadiusVector2D.MAX_COORD: 
            self.__x = x 
        if RadiusVector2D.MIN_COORD <= y <= RadiusVector2D.MAX_COORD: 
            self.__y = y 
 
    @property 
    def x(self): 
        return self.__x 
 
    @x.setter 
    def x(self, value): 
        if RadiusVector2D.MIN_COORD <= value <= RadiusVector2D.MAX_COORD: 
            self.__x = value 
 
    @property 
    def y(self): 
        return self.__y 
 
    @y.setter 
    def y(self, value): 
        if RadiusVector2D.MIN_COORD <= value <= RadiusVector2D.MAX_COORD: 
            self.__y = value 
 
    @classmethod 
    def norm2(cls, vector): 
        return vector.x**2 + vector.y**2