Advertisement
AleVilla96

PYTHON

May 13th, 2024 (edited)
906
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.92 KB | None | 0 0
  1.  
  2. class Punto:
  3.     # Se usan valores estándar al construir el objeto
  4.     def __init__(self, x=0.0, y=0.0):
  5.         self.x = x
  6.         self.y = y
  7.  
  8.     # Los getters se usar para obtener algún valor que existe dentro de un objeto.
  9.     # (getter)
  10.     def demeX(self):
  11.         return self.x
  12.  
  13.     # (getter)
  14.     def demeY(self):
  15.         return self.y
  16.  
  17.     # Los setters se usan para modificar valores existente dentro de un objeto.
  18.     # (setter)
  19.     def modificarY(self, y):
  20.         self.y = y
  21.  
  22.     # (setter)
  23.     def modificarX(self, x):
  24.         self.x = x
  25.  
  26.     # TODO: Investigar si podemos solo llamar a la función para que sólo se cree una nueva variable
  27.     # En este caso asumimos que self puede ser un punto definido anteriormente
  28.  
  29.     # En este caso se define un nuevo punto, esto no es necesario (1era iteración resolviendo)
  30.     # Se pasa el self como parámetro (no es necesario)
  31.     # El nuevo objeto se crea a partir del self
  32.     #Se accede a las variables de objeto directamente (mal)
  33.     def clonar(self, p):
  34.         np = Punto()
  35.         np.y = p.x
  36.         np.x = p.y
  37.         return np
  38.  
  39.     # En este caso se define un nuevo punto, esto no es necesario (2da iteración resolviendo)
  40.     # No es necesario pasar un punto como parámetro
  41.     # El nuevo objeto se crea a partir del self
  42.     def clonar(self):
  43.         np = Punto()
  44.         np.y = self.y
  45.         np.x = self.x
  46.         return np
  47.  
  48.     # En este caso sólo se reducen las lineas de codigo del método, no es necesario usar parámetros.
  49.     # El objeto se crea a partir del self, el objeto sobre el cual es llamado el método clonarNuevo().
  50.     # (3ra iteración resolviendo, luego de investigar).
  51.     # El llamado a Punto() ya genera un objeto nuevo.
  52.     def clonarNuevo(self):
  53.         return Punto(self.x, self.y)
  54.  
  55.     # Este metodo solo toma el self y un punto YA EXISTENTE y copia los valores de uno a otro.
  56.     # Se asume que los 2 puntos ya existen y cada uno tiene sus propios valores.
  57.     def copiar(self, p):
  58.         self.y = p.y
  59.         self.x = p.x
  60.  
  61.     # Este metodo solo toma el self y un punto YA EXISTENTE y copia los valores de uno a otro
  62.     # Es igual al anterior pero en este se usan los getters definidos anteriormente
  63.     def copiarNuevo(self, p):
  64.         self.y = p.demeY()
  65.         self.x = p.demeX()
  66.  
  67.     # Este metodo solo toma el self y un punto YA EXISTENTE y copia los valores de uno a otro
  68.     # Se usan los setters y getters antes definidos
  69.     def copiarNuevo2(self, p):
  70.         self.modificarX(p.demeX())
  71.         self.modificarY(p.demeY())
  72.  
  73. p1 = Punto(10, 60)
  74.  
  75. # El objeto se crea a partir del self
  76. # p2 = p1.clonar(p1)
  77.  
  78. # El objeto se crea a partir del self
  79. # p2 = p1.clonar()
  80.  
  81. # El objeto se crea a partir del self, el objeto sobre el cual es llamado el método clonarNuevo()
  82. p2 = p1.clonarNuevo()
  83.  
  84. print("1er punto (p1)")
  85. print(f"X= {p1.x}")
  86. print(f"Y= {p1.y}")
  87.  
  88. print("Punto cl onado (p1 ---> p2)")
  89. print(f"X=  {p2.x}")
  90. print(f"Y=  {p2.y}")
  91.  
  92. # Podemos ver que los puntos no comparten memoria, no se han generado dependencias.
  93. # Los 2 objetos son independientes.
  94. print("Ids: ")
  95. print(f"p1: {id(p1)}")
  96. print(f"p2: {id(p2)}")
  97.  
  98. p3 = Punto(35, 44)
  99. print("3er punto (p3)")
  100. print(f"X= {p3.x}")
  101. print(f"Y= {p3.y}")
  102.  
  103. # Uso de la 1ra iteración de copiar
  104. # p3.copiar(p1)
  105.  
  106. # Uso de la 2da iteración de copiar
  107. #p3.copiarNuevo(p1)
  108.  
  109. #Uso de la 3ra iteracion de copiar
  110. p3.copiarNuevo2(p1)
  111.  
  112. print("Punto copiado (p1 --> p3)")
  113. print(f"p1.x= {p1.x}")
  114. print(f"p1.y= {p1.y}")
  115. print(f"p3.x= {p3.x}")
  116. print(f"p3.y= {p3.y}")
  117.  
  118. # En cambio, cuando copiamos un punto, éstos van a compartir espacios de memoria.
  119. # Esto se da porque las variables x de los dos puntos apuntan al mismo espacio de memoria
  120. # Lo mismo para las variables y de cada punto
  121. # Generamos dependencia entre ellos.
  122.  
  123. print("Ids: ")
  124. print(f"p1.x: {id(p1.x)}")
  125. print(f"p3.x: {id(p3.x)}")
  126. print(f"p1.y: {id(p1.y)}")
  127. print(f"p3.y: {id(p3.y)}")
  128.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement