LU05.A11 - Decorator mit Benutzerobjekten
Erstellen Sie einen Decorator mit Parametern, der eine Funktion nur dann ausführt, wenn das Berechtigungslevel des Benutzers ausreicht.
Aufgabenstellung
Ihr Ziel ist es, einen Decorator namens check_permission
zu schreiben. Der Decorator nimmt einen Parameter required_permission
und führt die dekorierte Funktion nur aus, wenn das Berechtigungslevel des Benutzerobjekts (user.permission_level
) gleich oder höher als required_permission
ist. Sie sollten auch eine Benutzerklasse User
erstellen, die eine Eigenschaft für das Berechtigungslevel hat.
Code Vorlage
- main.py
class User: def __init__(self, username, permission_level): self.username = username self.permission_level = permission_level def check_permission(required_permission): """ Ein Decorator, der das Berechtigungslevel des Benutzers überprüft. Druckt f'{user.username} hat nicht genügend Berechtigungen.', wenn das Berechtigungslevel nicht ausreicht. Args: required_permission (int): Das erforderliche Berechtigungslevel. Returns: function: Eine dekorierte Funktion, die nur ausgeführt wird, wenn das Berechtigungslevel ausreicht. """ # TODO: Ihr Code hier ... @check_permission(2) def view_profile(user): print(f"{user.username} kann das Profil anzeigen.") @check_permission(4) def edit_profile(user): print(f"{user.username} kann das Profil bearbeiten.") # Testen Sie Ihren Decorator if __name__ == '__main__': alice = User('Alice', 3) bob = User('Bob', 1) view_profile(alice) edit_profile(alice) view_profile(bob) edit_profile(bob)
Vorgehen
- Akzeptiere das GitHub Classroom Assignment
- Klone dein persönliches Repository in die Entwicklungsumgebung
- Implementiere die Benutzerklasse
User
und den Decoratorcheck_permission
gemäß der Anleitung
Abgabe
Die Abgabe der Lösung erfolgt als Push in das persönliche GitHub-Repository.
⇒ GitHub Repo für externe Besucher
GitHub Repository https://github.com/templates-python/m323-lu05-a11-decorator2
Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden