Python - Urgente ejercicio clases

 
Vista:

Urgente ejercicio clases

Publicado por Jose Maria (1 intervención) el 11/02/2021 17:57:42
Se quiere elaborar un registro de usuarios de una página web aprovechando la programación orientada a objetos que ofrece Python. Los usuarios de dicho servidor web tendrán los siguientes campos:

ID
Nombre de usuario
Contraseña
Correo electrónico
Edad
El ID es un campo autogenerado que, cada vez que se registra un nuevo usuario, se incrementa en 1 . Por ejemplo, el primer usuario es el usuario 0 , el siguiente el 1 , etc. Dicho ID no se especifica al crear el nuevo usuario sino que se accede de forma global a él en el constructor.

El Nombre de usuario es un campo alfanumérico que no acepta espacios en blanco. Si los tuviera, se produciría un error.

La Contraseña es un campo alfanumérico que solo puede ser sobreescrito desde fuera de la clase. La contraseña cuenta con un algoritmo de protección el cual altera los caracteres que la componen. Dicho algoritmo se define como:

Pi=chr([(ord(Ci)⋅(ord(Ci)−1))65537mod122]+48)

El Correo electrónico es un campo que debe terminar obligatoriamente en @gmail.com.

La Edad es un campo numérico que tiene que ser mayor de 18 y menor de 99.

La clase contará, de forma global, una lista con todos los usuarios que se han registrado ya, de forma que cuando se registre un nuevo usuario se comprobará que el nombre de usuario está sin usar (no importa si usa el mismo correo).

Por otra parte, la clase tendrá un método estático

@staticmethod
def login(username, password)
el cual buscará el nombre de usuario dentro de la lista de usuarios registrados y, en caso de encontrarlo, comprobará que la contraseña cifrada coincide con la contraseña cifrada de dicho usuario, y devolverá True en caso de que los datos sean correctos y False si no existe el usuario o la contraseña no es válida.

Solución pedida
Implementar una clase en Python (y aquellas variables/funciones globales que se consideren oportunas) que cumpla con los requisitos anteriores. Hacer uso de @property para restringir los campos que se introducen en las variables.
Implementar una función que reciba los parámetros necesarios para crear un nuevo usuario y lo cree. En caso de que haya algún error, la función mostrará el mensaje de error y terminará la ejecución.
Implementar un decorador que reciba una cantidad n argumentos y compruebe que cada uno de los argumentos de la función decorada tengan el tipo especificado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-4
Responder