Witam, mam zagwozdkę jak poradzić sobie z kontrolą danych gdzie punkty x i y mają być liczbami i w zadaniu mam Wykorzystać właściwości, aby zabezpieczyć atrybuty przed przypisaniem im niewłaściwych danych. Mój kod wygląda tak:
import math
class Point:
def __init__(self, x, y):
self._x = x
self._y = y
@property
def x(self):
return self._x
@x.setter
def x(self, x):
if (isinstance(x, (str))):
print("podana współrzędna x musi być liczba")
@property
def y(self):
return self._y
@y.setter
def y(self, y):
if (isinstance(y, (str))):
print("podana współrzędna y musi być liczba")
def __str__(self):
return "Wspołrzędna x: {0.x}\nWspołrzędna y: {0.y}".format(self)
def __repr__(self):
return f"{self.__class__.__name__}({self.x},{self.y})"
def __eq__(self, other):
return self.x == other.x and self.y == other.y
def distance_from_origin(self, x, y):
odl = math.sqrt((0-x)**2+(0-y)**2)
return odl
if __name__ == '__main__':
x = int(input("podaj współrzedna x: "))
y = int(input("podaj współrzedna y: "))
wspol = Point(x, y)
wspol2 = Point(5, 7)
print(wspol) # str
print(repr(wspol)) # repr
print(wspol.distance_from_origin(x, y))
i wiem ze to za bardzo sensu nie ma, i nie mam pojęcia jakby to zrobić właśnie za pomocą tych właściwości.