9-1 餐馆 :创建一个名为 Restaurant 的类,其方法 __init__() 设置两个属性: restaurant_name 和 cuisine_type 。创建一个名
为 describe_restaurant() 的方法和一个名为 open_restaurant() 的方法,其中前者打印前述两项信息,而后者打印一条消息,指出餐馆正在营业。根据这个类创建一个名为 restaurant 的实例,分别打印其两个属性,再调用前述两个方法。
class Restaurant():
def __init__(self, restaurant_name, cuisine_type):
"""初始化餐馆信息"""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
def describe_restaurant(self):
"""描述餐馆信息"""
print(self.restaurant_name)
print(self.cuisine_type)
def open_restaurant(self):
"""餐馆正在营业"""
print("The restaurant is opening.")
restaurant = Restaurant('henry', 'chinese')
restaurant.describe_restaurant()
restaurant.open_restaurant()
结果:
henry
chinese
The restaurant is opening.
9-2 三家餐馆 :根据你为完成练习 9-1 而编写的类创建三个实例,并对每个实例调用方法 describe_restaurant() 。
class Restaurant():
def __init__(self, restaurant_name, cuisine_type):
"""初始化餐馆信息"""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
def describe_restaurant(self):
"""描述餐馆信息"""
print(self.restaurant_name.title())
print(self.cuisine_type.title())
def open_restaurant(self):
"""餐馆正在营业"""
print("The restaurant is opening.\n")
restaurant1 = Restaurant('henry', 'chinese')
restaurant1.describe_restaurant()
restaurant1.open_restaurant()
restaurant2 = Restaurant('allen', 'italian')
restaurant2.describe_restaurant()
restaurant2.open_restaurant()
restaurant3 = Restaurant('alice', 'french')
restaurant3.describe_restaurant()
restaurant3.open_restaurant()
Henry
Chinese
The restaurant is opening.
Allen
Italian
The restaurant is opening.
Alice
French
The restaurant is opening.
9-3 用户 :创建一个名为 User 的类,其中包含属性 first_name 和 last_name ,还有用户简介通常会存储的其他几个属性。在类 User 中定义一个名为 describe_user() 的方法,它打印用户信息摘要;再定义一个名为 greet_user() 的方法,它向用户发出个性化的问候。创建多个表示不同用户的实例,并对每个实例都调用上述两个方法。
class User():
def __init__(self, first_name, last_name ):
"""用户信息初始化"""
self.first_name = first_name
self.last_name = last_name
def describe_user(self):
"""用户详细信息"""
print(self.first_name)
print(self.last_name)
def greet_user(self):
"""问候用户"""
long_name = self.first_name.title() + " " + self.last_name.title() + "!"
print("Hello, " + long_name)
user = User('henry', 'he')
user.describe_user()
user.greet_user()
结果:
henry
he
Hello, Henry He!
9-4 就餐人数 :在为完成练习 9-1 而编写的程序中,添加一个名为 number_served 的属性,并将其默认值设置为 0 。根据这个类创建一个名为 restaurant 的实例;打印有多少人在这家餐馆就餐过,然后修改这个值并再次打印它。
class Restaurant():
def __init__(self, restaurant_name, cuisine_type):
"""初始化餐馆信息"""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
"""描述餐馆信息"""
print(self.restaurant_name)
print(self.cuisine_type)
def open_restaurant(self):
"""餐馆正在营业"""
print("The restaurant is opening.")
def served_number(self):
"""打印服务人数"""
print("The served_number are " + str(self.number_served) + ".")
restaurant = Restaurant('henry', 'chinese')
restaurant.describe_restaurant()
restaurant.open_restaurant()
restaurant.number_served = 20
restaurant.served_number()
henry
chinese
The restaurant is opening.
The served_number are 20.
添加一个名为 set_number_served() 的方法,它让你能够设置就餐人数。调用这个方法并向它传递一个值,然后再次打印这个值。
class Restaurant():
def __init__(self, restaurant_name, cuisine_type):
"""初始化餐馆信息"""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
"""描述餐馆信息"""
print(self.restaurant_name)
print(self.cuisine_type)
def open_restaurant(self):
"""餐馆正在营业"""
print("The restaurant is opening.")
def served_number(self):
"""打印服务人数"""
print("The served_number are " + str(self.number_served) + ".")
def set_number_served(self, number):
self.number_served = number
restaurant = Restaurant('henry', 'chinese')
restaurant.describe_restaurant()
restaurant.open_restaurant()
restaurant.set_number_served(20)
restaurant.served_number()
结果:
henry
chinese
The restaurant is opening.
The served_number are 20.
添加一个名为 increment_number_served() 的方法,它让你能够将就餐人数递增。调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。
class Restaurant():
def __init__(self, restaurant_name, cuisine_type):
"""初始化餐馆信息"""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
"""描述餐馆信息"""
print(self.restaurant_name)
print(self.cuisine_type)
def open_restaurant(self):
"""餐馆正在营业"""
print("The restaurant is opening.")
def served_number(self):
"""打印服务人数"""
print("The served_numbers are " + str(self.number_served) + ".")
def set_number_served(self, number):
self.number_served = number
def increment_number_served(self, number):
self.number_served += number
restaurant = Restaurant('henry', 'chinese')
restaurant.describe_restaurant()
restaurant.open_restaurant()
restaurant.set_number_served(20)
restaurant.served_number()
restaurant.increment_number_served(25)
restaurant.served_number()
结果:
henry
chinese
The restaurant is opening.
The served_numbers are 20.
The served_numbers are 45.
9-5 尝试登录次数 :在为完成练习 9-3 而编写的 User 类中,添加一个名为 login_attempts 的属性。编写一个名为 increment_login_attempts() 的方法,它将属性 login_attempts 的值加 1 。再编写一个名为 reset_login_attempts() 的方法,它将属性 login_attempts 的值重置为 0 。根据 User 类创建一个实例,再调用方法 increment_login_attempts() 多次。打印属性 login_attempts 的值,确认它被正确地递增;然后,调用方法 reset_login_attempts() ,并再次打印属性 login_attempts 的值,确认它被重置为 0 。
class User():
def __init__(self, first_name, last_name ):
"""用户信息初始化"""
self.first_name = first_name
self.last_name = last_name
self.login_attempts = 0
def describe_user(self):
"""用户详细信息"""
print(self.first_name)
print(self.last_name)
def greet_user(self):
"""问候用户"""
long_name = self.first_name.title() + " " + self.last_name.title() + "!"
print("Hello, " + long_name)
def increment_login_attempts(self, attempts):
self.login_attempts += attempts
def reset_login_attempts(self):
self.login_attempts = 0
user = User('henry', 'he')
user.greet_user()
user.increment_login_attempts(12)
print(user.login_attempts)
user.increment_login_attempts(15)
print(user.login_attempts)
user.reset_login_attempts()
print(user.login_attempts)
user.increment_login_attempts(1)
print(user.login_attempts)
结果:
Hello, Henry He!
12
27
0
1