👉 Xiperia ofrece consultoría empresarial que transforma datos en conocimiento accionable para alcanzar los objetivos de tu negocio. Conoce más en www.xiperia.com
te felicito por traer ejemplos con objetos de la vida real , muy buena explicación , entendi mucho , gracias ! sigue así con estos ejemplo del mundo real , y que nos sirven para tener las cosas mas clara y saber como usarlas en la vida
entonces podemos decir que aunque este encapsulado no esta protegido, sigue siendo publico por que hay formas de acceder al atributo, seria bueno explicar como hacer para evitar inyecciones de codigo aun teniendo esta debelidad
creo que seria bueno saber sobre los get y set para modificar los parametros que estan protegidos saludos , critica constructiva tambien me encanto como lo explicas aclaraste mis dudas
Hola, alguien se dio cuenta de que fácilmente pueden acceder a los atributos o métodos privados de una clase simplemente omitiendo las dos guiones bajos con los que comienza al llamarlo, no sé porque nadie menciona eso
hola , primero que nada, mis felicitaciones explicas muy bien, sin embargo no pude mandar llamar el atributo como "cuenta._Cuenta__balance" lo hice de otra forma y mi duda es : si es correcto o no,estoy usando pycharm, podrias echar un vistazo? class Cuenta: def __init__(self,nombre): self.nombre = nombre self.__balance = 0 #ATRIBUTO PROTEGIDO #METODO PARA INGRESAR DINERO: def depositar(self, monto): #PASAMOS EL PARAMETRO PARA PODER RELAIZAR EL DEPOSITO if monto > 0: self.__balance += monto return f"nuevo ingreso: {monto}" else: print("valor incorrecto, revise su anotacion") #METODO PARA RETIRAR DINERO: def Retirar_dinero(self,monto): if self.__balance > monto: self.__balance -= monto print(f"retiro exitoso por: {monto}") else: print("saldo insuficiente") def __str__(self): print(self.nombre, self.__balance) cliente1 = Cuenta("carlos") #cliente1.depositar(10) cliente1.Retirar_dinero(12) cliente1.depositar(-1) cliente1.__str__()
Gracias por tus comentarios y por la pregunta. Al respecto, el código correcto sería cliente1._Cuenta__balance (en lugar de cuenta._Cuenta__balance). El atributo aunque protegido está asociado a la instancia cliente1 y no a la clase Cuenta. Espero la respuesta sea de utilidad :)
👉 Xiperia ofrece consultoría empresarial que transforma datos en conocimiento accionable para alcanzar los objetivos de tu negocio. Conoce más en www.xiperia.com
explicas muy bien!!! Gracias!!!
Muchas gracias por tu comentario y por seguir el contenido del canal :)
Excelentes videos, gracias!
Gracias por tus comentarios :)
te felicito por traer ejemplos con objetos de la vida real , muy buena explicación , entendi mucho , gracias ! sigue así con estos ejemplo del mundo real , y que nos sirven para tener las cosas mas clara y saber como usarlas en la vida
Muchas gracias por tus comentarios :)
entonces podemos decir que aunque este encapsulado no esta protegido, sigue siendo publico por que hay formas de acceder al atributo, seria bueno explicar como hacer para evitar inyecciones de codigo aun teniendo esta debelidad
creo que seria bueno saber sobre los get y set para modificar los parametros que estan protegidos saludos , critica constructiva
tambien me encanto como lo explicas aclaraste mis dudas
Hola José Eduardo. Ciertamente, esa sería una muy buena forma de proteger el objeto. Gracias por tomarte el tiempo para dar retroalimentación :)
Realmente, en Python todo es público
de acuerdo
Hola, alguien se dio cuenta de que fácilmente pueden acceder a los atributos o métodos privados de una clase simplemente omitiendo las dos guiones bajos con los que comienza al llamarlo, no sé porque nadie menciona eso
como asi amigo?
hola , primero que nada, mis felicitaciones explicas muy bien, sin embargo no pude mandar llamar el atributo como "cuenta._Cuenta__balance" lo hice de otra forma y mi duda es : si es correcto o no,estoy usando pycharm, podrias echar un vistazo?
class Cuenta:
def __init__(self,nombre):
self.nombre = nombre
self.__balance = 0 #ATRIBUTO PROTEGIDO
#METODO PARA INGRESAR DINERO:
def depositar(self, monto): #PASAMOS EL PARAMETRO PARA PODER RELAIZAR EL DEPOSITO
if monto > 0:
self.__balance += monto
return f"nuevo ingreso: {monto}"
else:
print("valor incorrecto, revise su anotacion")
#METODO PARA RETIRAR DINERO:
def Retirar_dinero(self,monto):
if self.__balance > monto:
self.__balance -= monto
print(f"retiro exitoso por: {monto}")
else:
print("saldo insuficiente")
def __str__(self):
print(self.nombre, self.__balance)
cliente1 = Cuenta("carlos")
#cliente1.depositar(10)
cliente1.Retirar_dinero(12)
cliente1.depositar(-1)
cliente1.__str__()
Gracias por tus comentarios y por la pregunta. Al respecto, el código correcto sería cliente1._Cuenta__balance (en lugar de cuenta._Cuenta__balance). El atributo aunque protegido está asociado a la instancia cliente1 y no a la clase Cuenta. Espero la respuesta sea de utilidad :)