<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">from math import sqrt

"""
Clase que simula un punto en el plano cartesiano.
"""
class Punto:

	"""
	MÃ©todo constructor para iniciar un objeto Punto.
	@param x Coordenada X del punto.
	@param y Coordenada Y del punto.
	"""
	def __init__(self, x=0, y=0):
		self.x = x
		self.y = y

	def __str__(self):
		return '(' + str(self.x) + ',' + str(self.y) + ')'

	def get_X(self):
		return self.x

	def get_Y(self):
		return self.y

	def set_X(self, x):
		self.x = x

	def set_Y(self, y):
		self.y = y

	"""
	Sobrecarga el mÃ©todo __eq__ para poder utilizar el operador '==' con objetos
	de tipo punto.
	"""
	def __eq__(self, q):
		return self.x == q.x and self.y == q.y

	"""
	FunciÃ³n encargada de calcular la distancia entre 2 puntos.

	d = raiz_cuadrada((x1 - x2)^2 + (y1 - y2)^2)

	@param q El otro punto para calcular la distancia. 
	"""
	def distancia(self, q):
		return sqrt((self.x - q.x)**2 + (self.y - q.y)**2)

	"""
	x1, y1 - self
	x2, y2 - q
	x3, y3 - r
	"""
	def estanAlineados(self, q, r):
		# return ((q.x - self.x) / (r.x - q.x)) == ((q.y - self.y) / (r.y - q.y))
		return ((q.x - self.x) * (r.y - q.y)) == ((q.y - self.y) / (r.x - q.x))


if __name__ == '__main__':
	p = Punto(1,1)
	q = Punto(2,2)
	r = Punto(3,3)
	# p2 = Punto()
	# p3 = Punto(1,3)

	# p1.set_X(10)
	# print(p1)
	
	# p3.set_Y(-5)
	# print(p3)

	print('Distancia entre', p, 'y', q, '=', p.distancia(q))

	print('Son iguales', p, 'y', q, '??', p == q)

	print('Estan alineados???', p.estanAlineados(q, r))</pre></body></html>