自学Python笔记-第九章类、创建类、使用类和实例,课后代码(上)

9.1创建和使用类

  1. 创建Dog类
  2. 根据类创建实例,然后访问属性、调用方法、创建多个实例

方法 __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使用类和实例

  1. car类
  2. 给属性指定默认值
  3. 修改属性的值----->直接修改属性的值、通过方法修改属性的值、通过方法对属性的值递增
# 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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值