9.1创建和使用类
- 创建Dog类
- 根据类创建实例,然后访问属性、调用方法、创建多个实例
方法 __init__()
这是一个特殊的方法,
在这个方法中,形参self必不可少,还必须位于其他形参的前面。
以self为前缀的变量,可供类中所有方法使用
"""
9.1创建和使用类
创建一个表示小狗的类 Dog
包含名字和年龄+蹲下和打滚
使用类去创建表示特定小狗的实例
创建dog实例时,通过实参向Dog()传递名字和年龄,self会自动传递。
"""
class Dog:
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):
"""初始化属性name和age"""
# 以self为前缀的变量可供类中所有方法使用
# 获取存储在形参name中的值,并将其存储到变量name中,然后改变量被关联到当前创建的实例
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is now setting!")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
# 根据类创建实例
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title())
print("My dog's age is " + str(my_dog.age))
# 调用方法
my_dog.sit()
my_dog.roll_over()
9.2使用类和实例
- car类
- 给属性指定默认值
- 修改属性的值----->直接修改属性的值、通过方法修改属性的值、通过方法对属性的值递增
# 9.2.2给属性指定默认值
# odometer_reading,属性,初始值为0
# read_odometer() 方法
# 创建一个表示汽车的类,存储有关汽车的信息,还有一个汇总这些信息的方法 -get_descriptive_name
class Car:
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回简洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
# 通过方法修改属性的值
def update_odometer(self, mileage):
"""将里程表读数设置为指定的值"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer")
# 通过方法对值进行递增
def increment_odomenter(self, miles):
"""将里程表读数增加指定量"""
self.odometer_reading = self.odometer_reading + miles
# 创建实例
my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())
# 直接修改属性的值
my_new_car.odometer_reading = 23
print(my_new_car.odometer_reading)
# 通过方法修改属性的值
my_new_car.update_odometer(23)
my_new_car.read_odometer()
# 通过方法对值进行递增
my_used_car = Car('audi', 'a4', 2016)
my_used_car.odometer_reading = 13450
my_used_car.read_odometer()
my_used_car.increment_odomenter(100)
my_used_car.read_odometer()
动手试一试
9-1餐馆
# 9-1
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("这是一家%s店。" % self.cuisine_type)
def open_restaurant(self):
print(self.restaurant_name + "餐厅正在营业中。")
restaurant1 = Restaurant('hello', 'pizza')
print(restaurant1.restaurant_name)
print(restaurant1.cuisine_type)
restaurant1.describe_restaurant()
restaurant1.open_restaurant()
9-2三家餐馆
# 9-2
restaurant2 = Restaurant('goodbye', 'seafood')
restaurant3 = Restaurant('goodmoring', 'hotdog')
restaurant1.describe_restaurant()
restaurant2.describe_restaurant()
restaurant3.describe_restaurant()
9-3用户
# 9-3
class User:
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()
def describe_user(self):
"""显示用户信息的摘要。"""
print("\n" + self.first_name + " " + self.last_name)
print(" Username: " + self.username)
print(" Email: " + self.email)
print(" Location: " + self.location)
def greet_user(self):
"""向用户显示个性化的问候。"""
print("\nWelcome back, " + self.username + "!")
eric = User('eric', 'matthes', 'e_matthes', 'e_matthes@example.com', 'alaska')
eric.describe_user()
eric.greet_user()
willie = User('willie', 'burger', 'willieburger', 'wb@example.com', 'alaska')
willie.describe_user()
willie.greet_user()
9-4就餐人数
# 9-4
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("\n这家餐馆的名字是: " + self.restaurant_name)
print("这是一家%s店。" % self.cuisine_type)
def open_restaurant(self):
print(self.restaurant_name + " 餐厅正在营业中。")
def set_number_served(self, number_served):
"""设置服务人数"""
self.number_served = number_served
def increment_number_served(self, number):
"""增加服务人数"""
self.number_served = self.number_served + number
restaurant = Restaurant('hykkk', 'seafood')
restaurant.describe_restaurant()
restaurant.open_restaurant()
print("\n餐厅历史就餐人数: " + str(restaurant.number_served))
restaurant.number_served = 888
print("\n餐厅历史就餐人数: " + str(restaurant.number_served))
restaurant.set_number_served(1200)
print("\n餐厅历史就餐人数: " + str(restaurant.number_served))
restaurant.increment_number_served(133)
print("\n餐厅历史就餐人数: " + str(restaurant.number_served))
9-5尝试登录次数
# 9-5
class User:
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):
"""显示用户信息的摘要。"""
print("\n" + self.first_name + " " + self.last_name)
print(" Username: " + self.username)
print(" Email: " + self.email)
print(" Location: " + self.location)
def greet_user(self):
"""向用户显示个性化的问候。"""
print("\nWelcome back, " + self.username + "!")
def increment_login_attempts(self):
self.login_attempts += 1
def reset_login_attempts(self):
self.login_attempts = 0
eric = User('eric', 'matthes', 'e_matthes', 'e_matthes@example.com', 'alaska')
eric.describe_user()
eric.greet_user()
eric.increment_login_attempts()
eric.increment_login_attempts()
eric.increment_login_attempts()
print(eric.login_attempts)
eric.reset_login_attempts()
print(eric.login_attempts)