# **ćwiczenie 3 (zadanie domowe) ** # Stwórz klasę ``Point``, która będzie reprezentować punkt w przestrzeni wielowymiarowej: # * Konstruktor ma przyjąc tylko 1 parametr: listę współrzednych. Wykorzystaj funkcję z pierwszego zadania, żeby sprawdzić, czy lista zawiera wyłącznie liczby. # * Napisz metodę add, która dida dwa punkty po współrzędnych i zwróci obiekt typu ``Punkt``. Zaimplementuj własny wyjątek ``DimensionError``, który zostaje wyrzucony, jeżeli dodawany punkt ma inny wymiar. # * Napisz metodę ``to\_string``, która zwróci łancuch znakowy, który w czytelny sposób przedstawi punkt. # * Napisz metodę __len__, która zwróci liczbę współrzędnych punktu. Zobacz, czy możesz teraz wywołać funkcję len na obiekcie typy punkt. # * Napisz metodę __str__, która bedzie działać dokładnie tak samo jak metoda ``to_string``. Wyświetl obiekt typy Point korzystając z funkcji print. from labs04.task01 import is_numeric class Point: coordinates = [] def __init__(self, coordinates): if is_numeric(coordinates): self.coordinates = coordinates else: raise Exception("Coordinates are not numeric") def to_string(self): return str(self.coordinates) def __len__(self): return len(self.coordinates) def __str__(self): return self.to_string() class DimensionError(Exception): def __init__(self, text): self.text = text def __str__(self): return self.text def add(point_1, point_2): if len(point_1.coordinates) != len(point_2.coordinates): raise DimensionError("Coordinates have different dimensions") else: new_coordinates = [x + y for x, y in zip(point_1.coordinates, point_2.coordinates)] return Point(new_coordinates) if __name__ == "__main__": new_point = Point([5, 10, 12, 6]) print(new_point.__len__()) new_point_2 = Point([12, 23, 21, 16]) print(new_point_2.__str__()) new_point_3 = add(new_point, new_point_2) print('1st point =', new_point) print('2nd point =', new_point_2) print('1st point + 2nd point = ', new_point_3)