I am trying to create a very basic class: Line as follows:
class Line:
def __init__(self, x1, y1, x2=None, y2=None, dx=None, dy=None):
self._x1 = x1
self._y1 = y1
if dx is None:
if x2 is None:
raise ValueError("You must specify either x2 or dx. both argument are not passed")
else:
self._x2 = x2
self._dx = dx
else:
if x2 is None:
self._x2 = self._x1 + dx
self._dx = dx
else:
raise ValueError("Both x2 and dx are passed. You must supply only one of them")
if dy is None:
if y2 is None:
raise ValueError("You must specify either y2 or dy. both argument are not passed")
else:
self._y2 = y2
self._dy = dy
else:
if y2 is None:
self._y2 = self._y1 + dy
self._dy = dy
else:
raise ValueError("Both y2 and dy are passed. You must supply only one of them")
def x1(self):
return self._x1
def x2(self):
return self._x2
def y1(self):
return self._y1
def y2(self):
return self._y2
def dx(self):
return self._dx
def dy(self):
return self._dy
x1 and y1 arguments are mandatory. But I want:
- Only
x2ordxis passed not both. - Only
y2ordyis passed not both.
In the code above I feel that I am repeating my self. How can I achieve that with minimum conditons?
I appreciate your help