0 Preface
Python Programming: from introduction to practice Chapter 9 class exercises - class User
1 description of exercises
Exercise 9-3 users
Create a class named User that contains the property first_name and last_name, and several other attributes that are usually stored in the User profile. Define a User class named describe_ Method of User (), which prints the summary of User information; Define another one named greet_ Method of User (), which sends personalized greetings to users.
Create multiple instances representing different users and call the above two methods for each instance.
Exercise 9-5 login attempts
In the User class you wrote to complete exercise 9-3, add a name called login_ Attributes of attempts. Write a program called increment_ login_ Method of attempts (), which takes the attribute login_ Add 1 to the value of attempts. Write another one called reset_ login_ Method of attempts (), which takes the attribute login_ The value of attempts is reset to 0.
Create an instance according to the User class, and then call the method increment_login_attempts() more than once. Print attribute login_ The value of attempts to confirm that it is incremented correctly; Then, call the method reset_. login_attempts() and print the attribute login again_ The value of attempts and confirm that it is reset to 0.
Exercise 9-7 administrator
Administrator is a special kind of User. Write a class called Admin that inherits the User class you wrote to complete exercises 9-3 or 9-5. Add an attribute named privileges to store a list of strings (such as "can add post", "can delete post", "can ban user", etc.). Write a program called show_privileges(), which displays the privileges of the administrator. Create an Admin instance and call this method.
Exercise 9-8 permissions
Write a class called privileges, which has only one attribute - privileges, which stores the list of strings described in exercise 9-7. Show method_ Move privileges () into this class. In the Admin class, use an instance of privileges as its property. Create an Admin instance and use the method show_privileges() to display its permissions.
Exercise 9-11 importing the Admin class
Based on the work done to complete exercises 9-8. Store the User, privileges and Admin classes in a module, create a file, create an Admin instance in it, and call the show method on it_ Privileges() to make sure everything works correctly.
2. Self programming
2.1 User.py
class User: def __init__(self, first_name, last_name, username, login_attempts): self.first_name = first_name self.last_name = last_name self.username = username self.login_attempts = login_attempts def describe_user(self): print(f"{self.first_name} {self.last_name}'s username is: {self.username}") def greet_user(self): print(f"Hello, {self.first_name} {self.last_name}") def increment_login_attempts(self): self.login_attempts += 1 def reset_login_attempts(self): self.login_attempts = 0 def show_login_attempts(self): print(f"Now your login attempts are: {self.login_attempts}") class Privileges: def __init__(self, privileges=[]): self.privileges = privileges def show_privileges(self): if self.privileges: print("Your privileges are:") for privilege in self.privileges: print("-" + str(privilege)) class Admin(User): def __init__(self, first_name, last_name, username, login_attempts): super().__init__(first_name, last_name, username, login_attempts) self.privileges = Privileges()
2.2 main.py
from user import User, Admin user1 = User("A", "B", 'Abb', 5) user1.describe_user() user1.greet_user() user1.increment_login_attempts() user1.show_login_attempts() user1.reset_login_attempts() user1.show_login_attempts() user2 = User("C", "D", 'Cdd', 0) user2.describe_user() user2.greet_user() user2.increment_login_attempts() user2.show_login_attempts() admin1 = Admin("E", "F", 'EfF', 10) admin1.describe_user() admin1.greet_user() admin1.privileges.privileges = ['can add post', 'can delete post'] admin1.privileges.show_privileges()
2.3 Output
A B's username is: Abb Hello, A B Now your login attempts are: 6 Now your login attempts are: 0 C D's username is: Cdd Hello, C D Now your login attempts are: 1 E F's username is: EfF Hello, E F Your privileges are: -can add post -can delete post
3 exercise 9-11 importing Admin class reference answer
3.1 user.py
"""A collection of classes for modeling users.""" class User(): """Represent a simple user profile.""" def __init__(self, first_name, last_name, username, email, location): """Initialize the user.""" self.first_name = first_name.title() self.last_name = last_name.title() self.username = username self.email = email self.location = location.title() self.login_attempts = 0 def describe_user(self): """Display a summary of the user's information.""" print("\n" + self.first_name + " " + self.last_name) print(" Username: " + self.username) print(" Email: " + self.email) print(" Location: " + self.location) def greet_user(self): """Display a personalized greeting to the user.""" print("\nWelcome back, " + self.username + "!") def increment_login_attempts(self): """Increment the value of login_attempts.""" self.login_attempts += 1 def reset_login_attempts(self): """Reset login_attempts to 0.""" self.login_attempts = 0 class Admin(User): """A user with administrative privileges.""" def __init__(self, first_name, last_name, username, email, location): """Initialize the admin.""" super().__init__(first_name, last_name, username, email, location) # Initialize an empty set of privileges. self.privileges = Privileges([]) class Privileges(): """Stores privileges associated with an Admin account.""" def __init__(self, privileges): """Initialize the privileges object.""" self.privilege = privileges def show_privileges(self): """Display the privileges this administrator has.""" for privilege in self.privileges: print("- " + privilege)
3.2 my_user.py
from user import Admin eric = Admin('eric', 'matthes', 'e_matthes', 'e_matthes@example.com', 'alaska') eric.describe_user() eric_privileges = [ 'can reset passwords', 'can moderate discussions', 'can suspend accounts', ] eric.privileges.privileges = eric_privileges print("\nThe admin " + eric.username + " has these privileges: ") eric.privileges.show_privileges()
3.3 Output
Eric Matthes Username: e_matthes Email: e_matthes@example.com Location: Alaska The admin e_matthes has these privileges: - can reset passwords - can moderate discussions - can suspend accounts
3 conclusion
Chapter 46
Review Python and hope to learn something interesting
Solve the problems in your work
Personal level is limited. If you have any problems, you are welcome to criticize and correct!