《Python编程从入门到实践》day15

昨日知识点回顾:

继承父类的属性、方法

定义、修改子类独有的属性、方法

今日知识点学习:

9.4 导入类

        9.4.1 导入单个类

car.py

class Car:
    """一次模拟汽车的简单尝试"""
    def __init__(self, make, model, year):
        """初始化属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odo_reading = 0

    def get_ifo(self):
        """返回汽车完整信息"""
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odo(self):
        """打印汽车里程数"""
        # print(f"The car has {self.odo_reading} miles on it.")
        # 运行结果末尾+None
        return f"The car has {self.odo_reading} miles on it."
    

my_car.py

from car import Car
my_new_car = Car('audi', 'a4', '2016')
print(my_new_car.get_ifo())
my_new_car.odo_reading = 23
print(my_new_car.odo_reading)
print(my_new_car.read_odo())


# 运行结果:
# 2016 Audi A4
# 23
# The car has 23 miles on it.

                9.4.2 在一个模块中存储多个类

car.py

class Car:
    """一次模拟汽车的简单尝试"""
    def __init__(self, make, model, year):
        """初始化属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odo_reading = 0

    def get_ifo(self):
        """返回汽车完整信息"""
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odo(self):
        """打印汽车里程数"""
        print(f"The car has {self.odo_reading} miles on it.")

    def update_odo(self, miles):
        """更新公里数,禁止往回调"""
        if miles >= self.odo_reading:
            self.odo_reading = miles
        else:
            print('你不能回调公里数')

    def increment_odo(self, miles):
        """将里程表增加指定公里数"""
        self.odo_reading += miles

    def fill_gas_tank(self):
        """打印一条加满油的信息"""
        print('油加满')


class ElCar(Car):
    """电动汽车的独特之处"""
    def __init__(self, make, model, year):
        """初始化父类的属性"""
        # super().__init__(make,model,year)
        super(ElCar, self).__init__(make, model, year)
        self.battery = Battery()

    def fill_gas_tank(self):
        """打印一条电动车不需要加油的信息"""
        print('不需要加油')


class Battery:
    """一次模拟电动汽车电瓶的简单尝试"""
    def __init__(self, battery_size=75):
        """初始化电瓶的值"""
        self.battery_size = battery_size

    def describe_battery(self):
        """打印一条电瓶容量的信息"""
        print(f"The car's battery is {self.battery_size}-kWh.")

    def get_range(self):
        """打印电瓶的续航里程"""
        rang = 0
        if self.battery_size == 75:
            rang = 260
        if self.battery_size == 100:
            rang = 315
        print(f"This car go about {rang} miles on a full charge.")
    

my_car.py

from car import ElCar
my_tesla = ElCar('tesla', 'model S', '2017')
print(my_tesla.get_ifo())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()


# 运行结果:
# 2017 Tesla Model S
# The car's battery is 75-kWh.
# This car go about 260 miles on a full charge.

        9.4.3 从一个模块导入多个类

my_car.py

from car import Car,ElCar

my_beetle = Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_ifo())

my_tesla = ElCar('tesla', 'model S', 2017)
print(my_tesla.get_ifo())


# 运行结果:
# 2019 Volkswagen Beetle
# 2017 Tesla Model S

        9.4.4 导入整个模块

        报bug:NameError: name 'Car' is not defined. Did you mean: 'chr'?

        文件都在同一目录内

my_car.py

import car

my_beetle = Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_ifo())

my_tesla = ElCar('tesla', 'model S', 2017)
print(my_tesla.get_ifo())


#NameError: name 'Car' is not defined. Did you mean: 'chr'?

        9.4.5 导入模块中的所有类

from test import *

my_beetle = Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_ifo())

my_tesla = ElCar('tesla', 'model S', 2017)
print(my_tesla.get_ifo())


# 运行结果:
# 2019 Volkswagen Beetle
# 2017 Tesla Model S

        9.4.6 在一个模块中导入另一个模块

car.py

class Car:
    """一次模拟汽车的简单尝试"""
    def __init__(self, make, model, year):
        """初始化属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odo_reading = 0

    def get_ifo(self):
        """返回汽车完整信息"""
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odo(self):
        """打印汽车里程数"""
        print(f"The car has {self.odo_reading} miles on it.")

    def update_odo(self, miles):
        """更新公里数,禁止往回调"""
        if miles >= self.odo_reading:
            self.odo_reading = miles
        else:
            print('你不能回调公里数')

    def increment_odo(self, miles):
        """将里程表增加指定公里数"""
        self.odo_reading += miles

    def fill_gas_tank(self):
        """打印一条加满油的信息"""
        print('油加满')

my_car.py
from car import Car

class ElCar(Car):
    """电动汽车的独特之处"""
    def __init__(self, make, model, year):
        """初始化父类的属性"""
        # super().__init__(make,model,year)
        super(ElCar, self).__init__(make, model, year)
        self.battery = Battery()

    def fill_gas_tank(self):
        """打印一条电动车不需要加油的信息"""
        print('不需要加油')


class Battery:
    """一次模拟电动汽车电瓶的简单尝试"""
    def __init__(self, battery_size=75):
        """初始化电瓶的值"""
        self.battery_size = battery_size

    def describe_battery(self):
        """打印一条电瓶容量的信息"""
        print(f"The car's battery is {self.battery_size}-kWh.")

    def get_range(self):
        """打印电瓶的续航里程"""
        rang = 0
        if self.battery_size == 75:
            rang = 260
        if self.battery_size == 100:
            rang = 315
        print(f"This car go about {rang} miles on a full charge.")
    


my_beetle = Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_ifo())

my_tesla = ElCar('tesla', 'model S', 2017)
print(my_tesla.get_ifo())
# 运行结果:
# 2019 Volkswagen Beetle
# 2017 Tesla Model S

        9.4.7 使用别名

car.py

class Car:
    """一次模拟汽车的简单尝试"""
    def __init__(self, make, model, year):
        """初始化属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odo_reading = 0

    def get_ifo(self):
        """返回汽车完整信息"""
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odo(self):
        """打印汽车里程数"""
        print(f"The car has {self.odo_reading} miles on it.")

    def update_odo(self, miles):
        """更新公里数,禁止往回调"""
        if miles >= self.odo_reading:
            self.odo_reading = miles
        else:
            print('你不能回调公里数')

    def increment_odo(self, miles):
        """将里程表增加指定公里数"""
        self.odo_reading += miles

    def fill_gas_tank(self):
        """打印一条加满油的信息"""
        print('油加满')


class ElCar(Car):
    """电动汽车的独特之处"""
    def __init__(self, make, model, year):
        """初始化父类的属性"""
        # super().__init__(make,model,year)
        super(ElCar, self).__init__(make, model, year)
        self.battery = Battery()

    def fill_gas_tank(self):
        """打印一条电动车不需要加油的信息"""
        print('不需要加油')


class Battery:
    """一次模拟电动汽车电瓶的简单尝试"""
    def __init__(self, battery_size=75):
        """初始化电瓶的值"""
        self.battery_size = battery_size

    def describe_battery(self):
        """打印一条电瓶容量的信息"""
        print(f"The car's battery is {self.battery_size}-kWh.")

    def get_range(self):
        """打印电瓶的续航里程"""
        rang = 0
        if self.battery_size == 75:
            rang = 260
        if self.battery_size == 100:
            rang = 315
        print(f"This car go about {rang} miles on a full charge.")
    

my_car.py

from car import ElCar as EC
my_tesla = EC('tesla', 'model S', '2017')
print(my_tesla.get_ifo())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()


# 运行结果:
# 2017 Tesla Model S
# The car's battery is 75-kWh.
# This car go about 260 miles on a full charge.

9.5 Python标准库

from random import randint
print(randint(1,6))

from random import choice
players = ['charles', 'martina', 'michael', 'eli']
print(choice(players))

# 运行结果:
# 3
# eli

9.6 类编码风格

        驼峰命名法:类名中的每个单词首字母大写,不使用下划线。实例名和模块名使用小写模式,单词之间加下划线。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值