#!/usr/bin/env python2 # -*- coding: utf-8 -*- class DimensionError(Exception): """Klasa odpowiadajaca za wyjatek współrzędnych <>3""" def __init__(self, text): self.text = text def __str__(self): return self.text class Point: """Klasa reprezentująca punkt w 3D""" def __is_numeric(self,n): for i in n: if not (isinstance(i, int) or isinstance(i,float)): return False return True and len(n) > 0 def __init__(self, xyz): """Konstruktor klasy Point, argument xyz - lista puntkwo w 3D. Warunkiem sa 3 wspolrzedne""" if not self.__is_numeric(xyz): raise DimensionError("Nieprawidlowe wspolrzedne!") if len(xyz) != 3: raise DimensionError("Nieprawidlowa liczba wspolrzednych (<> 3)") self.x = xyz[0] self.y = xyz[1] self.z = xyz[2] def to_string(self): """Wypisuje wektor współrzędnych punktu w 3D jako string""" return '[' + ','.join([str(self.x), str(self.y), str(self.z)]) + ']' def add(oPoint1, oPoint2): """Metoda statyczna klasy Point. Zwraca sumę współrzędnych danych 2 punktów w 3D arg1 - obiekt klasy Punkt arg2 - obiekt klasy Punkt """ l1 = [oPoint1.x, oPoint1.y, oPoint1.z] l2 = [oPoint2.x, oPoint2.y, oPoint2.z] nl = [c1+c2 for c1, c2 in zip(l1, l2)] return Point(nl) def __len__(self): """Zwraca liczbe wspolrzednych""" return 3 def __str__(self): """Funkcja string dla klasy Point, wypisuje wspolrzedne punktu jako string""" return self.to_string() if __name__ == "__main__": pkt1 = Point([4, 8, 12]) print('pkt1 =', pkt1) pkt2 = Point([-1, 0, 3]) print('pkt2 =', pkt2) pkt3 = Point.add(pkt1, pkt2) print('pkt3 = pkt1 (+) pkt2 = ', pkt3)