''' **ć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 (dwa wektory) 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. ''' class DimensionError(Exception): pass def validate_list(list_arg): return sum([not (type(element) is int or type(element) is float) for element in list_arg]) == 0 class Point: def __init__(self, coords): if validate_list(coords): self.coords = coords[:] else: self.coords = [0] def add(self, point_right): n = len(self.coords) if n != len(point_right): raise DimensionError("Wymiary punktów się nie zgadzają.") return Point([self.coords[i] + point_right.coords[i] for i in range(n)]) def to_string(self): return '(' + ', '.join(map(str, self.coords)) + ')' def __len__(self): return len(self.coords) def __str__(self): return self.to_string() # testowanie p1 = Point([1, 2, 3]) p2 = Point([4, 5, 6]) print(p1.to_string()) print(p2.to_string()) print(str(p1.add(p2))) print(len(p1)) print(Point(['1'])) try: p1.add(Point([1])) except: print('wyjątek')