IIC2233 / Syllabus-2022-2

Repositorio oficial del curso IIC2233 Programación Avanzada 🚀✨
61 stars 61 forks source link

Duda sobre uso de getters y setters para distintos atributos #196

Open Bongazo opened 2 years ago

Bongazo commented 2 years ago

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Duda

Hola! Definí properties para algunos atributos de la clase Programon y respectivos metodos Setter, sin embargo, ahora que lo hice, no sé muy bien qué atributos podrían/tendrían que ser properties igualmente, tanto en la clase programon con el resto de sus atributos, como para el resto de las clases. Me hace el mismo sentido que todos los atributos variables de las clases sean properties como asimismo no lo sean. h e l p Saludos y gracias de antemano.

Lord-Kelsier commented 2 years ago

Hola, para distinguir si debe o no ser una property debes hacerte la siguiente pregunta:

Si es asi necesita un setter. Podrias ampliar esto a los getters.

Si es asi necesita un getter

Bongazo commented 2 years ago

Me queda claro! Muchas gracias, tengo una ultima duda. Es posible definir un setter sin definir un getter?

Lord-Kelsier commented 2 years ago

Así es! 😱 Sin emabrgo, seria algo extraño ya que las properties son un atributo más y por ende seria como definir un atributo que no se puede leer, solo modificar. Esto se logra con la función property

class A:
  def __init__(self):
    self._vida = 100
  def  vida(self, new_value):
    self._vida = new_value

  vida = property(None, vida)

Si ahora queremos ver el valor de vida el programa se cae, pero si queremos modificarlo no se cae. Si lo que quieres es ahorrar escribir el getter podrías hacer vida = property(lambda self: self._vida, vida) Esto lo saque de aqui El comportamiento de las funciones lambda se verá al final del curso.