From 5420a9e04c38644ed22d0f12f92a3934c2e10072 Mon Sep 17 00:00:00 2001 From: cheeks <134818917+leftovertoast@users.noreply.github.com> Date: Sat, 1 Mar 2025 22:27:36 +0000 Subject: [PATCH] Completed 9-8 Privileges --- Chapter_09/9-08_privileges.py | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Chapter_09/9-08_privileges.py diff --git a/Chapter_09/9-08_privileges.py b/Chapter_09/9-08_privileges.py new file mode 100644 index 0000000..eb63960 --- /dev/null +++ b/Chapter_09/9-08_privileges.py @@ -0,0 +1,62 @@ +# Exercise 9-8 Privileges +# Learning Objective: Compostition + +class Users: + def __init__(self, first_name, last_name, dob, state, hair_color): + """Initialize User Profile variables""" + self.first_name = first_name + self.last_name = last_name + self.dob = dob + self.state = state + self.hair_color = hair_color + self.login_attempts = 0 + + def describe_user(self): + """Prints descriptions of user based on inputs""" + print(f"{self.first_name} {self.last_name} was born on {self.dob}, they live in {self.state} and they have {self.hair_color}") + + def greet_user(self): + """Prints personalized greeting to user specified""" + print(f"Welcome to this python program, {self.first_name} {self.last_name}!") + + def increment_login_attempts(self): + """Increments Login Attempts by one""" + self.login_attempts += 1 + + def reset_login_attempts(self): + """Resets login attempts to zero""" + self.login_attempts = 0 + +class Privileges: + def __init__(self, privileges=[]): + """Create separate class for privileges """ + self.privileges = privileges + + def show_privileges(self): + """ Print Privileges list """ + print(f"This user has the following privileges:\n") + if self.privileges: + for privilege in self.privileges: + print(f" - {privilege}") + else: + print(" - This user has no privileges.") + +class Admin(Users): + def __init__(self, first_name, last_name, dob, state, hair_color): + """ Initialize Users the add sepeicifc Admin attributes/methods """ + super().__init__(first_name, last_name, dob, state, hair_color) + self.privileges = Privileges() + +super_stan = Admin("Stan", "Gerk", "07/02/1954", "GA", "Blonde") +super_stan.describe_user() + +super_stan.privileges.show_privileges() + +print("Adding privileges...") +super_stan_privileges = ["can add post", "can delete post", "can ban user", "can unban user", "can create user", "can delete user", "can modify site contents"] + +super_stan.privileges.privileges = super_stan_privileges + +super_stan.privileges.show_privileges() + +### Needed tremendous helps with this one. Much of this code is taken from Author's solution here: https://ehmatthes.github.io/pcc_3e/solutions/chapter_9/#9-8-privileges \ No newline at end of file