任务1.就餐人数
-
问题描述
在为完成练习类1的任务1而编写的程序中,添加一个名为number_served 的属性,并将其默认值设置为0。根据这个类创建一个名为restaurant 的实 例;打印有多少人在这家餐馆就餐过,然后修改这个值并再次打印它。 添加一个名为set_number_served() 的方法,它让你能够设置就餐人数。调用这个方法并向它传递一个值,然后再次打印这个值。 添加一个名为increment_number_served() 的方法,它让你能够将就餐人数递增。调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。 -
源代码
# coding:gbk
class Restaurant:
"""restaurant information"""
def __init__(self, restaurant_name, cuisine_type):
"""Init."""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
""""Returns clean description information."""
print("\n 餐厅名称: " + self.restaurant_name)
print("\n 菜式: " + self.cuisine_type)
def open_restaurant(self):
print("The " + self.restaurant_name + " is open now.")
def set_number_served(self, number):
self.number = number
def increment_number_served(self, number_predict):
self.number_served += number_predict
restaurant = Restaurant('Hong Kong style tea restaurant', 'Roast goose rice')
restaurant.describe_restaurant()
restaurant.open_restaurant()
print("My favorite restaurant is " + restaurant.restaurant_name.title() + ".")
print("The restaurant cuisine is " + restaurant.cuisine_type.title() + ".")
print("Number Served: " + str(restaurant.number_served))
restaurant.number_served = 8
print("Number Served: " + str(restaurant.number_served))
restaurant.set_number_served(20)
print("Number Served: " + str(restaurant.number))
restaurant.increment_number_served(5)
print("Number Served: " + str(restaurant.number_served))
- 结果截图
任务2.尝试登陆次数
- 问题描述
在为完成练习类1的任务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。 - 源代码
# coding:gbk
import hashlib
class User:
"""individual resume"""
def __init__(self, first_name, last_name, country, login_attempts):
self.first_name = first_name
self.last_name = last_name
self.country = country
self.login_attempts = login_attempts
def describe_user(self):
hash_md5 = hashlib.md5('data'.encode('utf-8'))
hash_md5.update('admin'.encode('utf-8'))
return hash_md5.hexdigest()
def greet_user(self):
print("Hello!")
def increment_login_attempts(self):
self.login_attempts += 1
return self.login_attempts
def reset_login_attempts(self):
self.login_attempts = 0
return self.login_attempts
user_aurora = User('Aurora', 'Emily', 'America', 5)
print(str(user_aurora.increment_login_attempts()))
print(str(user_aurora.increment_login_attempts()))
print(str(user_aurora.increment_login_attempts()))
user_aurora.reset_login_attempts()
print(str(user_aurora.reset_login_attempts()))
- 结果截图
知识点
1.类属性仅是与类相关的数据值,和实例无关,被称为静态属性。
2.静态属性的地址空间被所有的实例所共享。
3.实例改变类属性的影响分两种情况:可变与不可变属性。
4.面向对象三大特征:
- 封装:将客观事物封装成抽象的类,而且类的属性或者方法进行权限设定,控制外部的访问行为。
- 继承:子类继承父类的所有功能,并在无需编写原来的类的情况下对这些功能进行扩展。
- 多态: 允许你将父对象赋值为一个或者更多的它的子对象的技术。父对象可以根据其被赋予的不同子对象,同一方法在执行时按照子类呈现出不同执行过程。
5.Python中一切皆对象。
6.新建一个对象的过程叫做实例化,而面向对象就是这个类的一个实例。
7.打印方法时,需要方法有返回值才能打印出来(return)。