昨日知识点回顾:
继承父类的属性、方法
定义、修改子类独有的属性、方法
今日知识点学习:
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 类编码风格
驼峰命名法:类名中的每个单词首字母大写,不使用下划线。实例名和模块名使用小写模式,单词之间加下划线。