【日常Python-13】类2

任务1.就餐人数

  1. 问题描述
    在为完成练习类1的任务1而编写的程序中,添加一个名为number_served 的属性,并将其默认值设置为0。根据这个类创建一个名为restaurant 的实 例;打印有多少人在这家餐馆就餐过,然后修改这个值并再次打印它。 添加一个名为set_number_served() 的方法,它让你能够设置就餐人数。调用这个方法并向它传递一个值,然后再次打印这个值。 添加一个名为increment_number_served() 的方法,它让你能够将就餐人数递增。调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。

  2. 源代码

# 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))
  1. 结果截图
    在这里插入图片描述

任务2.尝试登陆次数

  1. 问题描述
    在为完成练习类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。
  2. 源代码
# 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. 结果截图

在这里插入图片描述
知识点
1.类属性仅是与类相关的数据值,和实例无关,被称为静态属性。
2.静态属性的地址空间被所有的实例所共享。
3.实例改变类属性的影响分两种情况:可变与不可变属性。
4.面向对象三大特征:

  • 封装:将客观事物封装成抽象的类,而且类的属性或者方法进行权限设定,控制外部的访问行为。
  • 继承:子类继承父类的所有功能,并在无需编写原来的类的情况下对这些功能进行扩展。
  • 多态: 允许你将父对象赋值为一个或者更多的它的子对象的技术。父对象可以根据其被赋予的不同子对象,同一方法在执行时按照子类呈现出不同执行过程。

5.Python中一切皆对象。
6.新建一个对象的过程叫做实例化,而面向对象就是这个类的一个实例。
7.打印方法时,需要方法有返回值才能打印出来(return)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值