Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Desafío: AbstractAdmin | Polimorfismo y Abstracción
Programación Orientada a Objetos en Python a Fondo

bookDesafío: AbstractAdmin

Tarea
test

Swipe to show code editor

¡Protejamos la estructura de tu clase Admin! Necesitas definir la clase AbstractAdmin que debe tener la estructura estricta de la clase Admin.

  1. Importa la clase ABC y el decorador abstractmethod del paquete abc.
  2. Define la clase AbstractAdmin heredada de la clase ABC.
  3. Definir los métodos abstractos login(), logout(), create_content(), update_content(), y delete_content() mediante el decorador @abstractmethod.
    Utiliza la palabra clave pass para perder la implementación de la función.
  4. Hereda la clase Admin de la clase AbstractAdmin.
  5. Intenta ejecutar el código con comentarios. Fíjate en el Traceback.
    1. Borra los comentarios de la clase Admin y vuelve a ejecutar el código.

Nota

Los métodos abstractos no deben recibir argumentos.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 7
from ___ import ___, ___


class AuthMixin:
is_authenticated = False
def login(self, taken_password):
if self.password == taken_password:
self.is_authenticated = True
print(f"{self.username} is authenticated")
else:
print("Wrong password!")

def logout(self):
self.is_authenticated = False
print(f"{self.username} is loggouted")

# ========== The new code is below ==========
class ___(___):
@___
def login():
pass
@abstractmethod
___ logout():
pass
@abstractmethod
def create_content():
___
@___
def ___():
pass
___
def delete_content():
pass
# ========== The new code is above ==========


class User(AuthMixin):
def __init__(self, username, password):
self.username = username
self.password = password
@property
def password(self):
return self._password

@password.setter
def password(self, new_password):
if isinstance(new_password, str):
if len(new_password) >= 8:
self._password = new_password
else:
print("The password length should be >= 8.")
else:
print("The password should be string.")


class Admin(User, ___):
def create_content(self):
print(f"{self.username} creates the content")
def update_content(self):
print(f"{self.username} updates the content")
toggle bottom row
We use cookies to make your experience better!
some-alt