8.0、Python基础---类(浅读)(下)
目录
8.5、导入类
8.5.1、导入单个类
8.5.2、在一个模块中存储多个类
8.5.3、导入模块中的所有类
8.5.4、在一个模块中导入另一个模块
8.5、导入类
随着你不断地给类添加功能,文件可能变得很长,即便你妥善地使用了继承亦如此。为遵循Python的总体理念,应让文件尽可能整洁。为在这方面提供帮助,Python允许你将类存储在模块中,然后在主程序中导入所需的模块。
8.5.1、导入单个类
例如前面汽车的案例,首先创建一个car.py文件,里面只包含Car类的代码。
"""一个用于表示汽车的类
"""
class Car():"""模拟汽车 -> make :制作 ;model:模型;year:年份"""def __init__(self,make,model,year):"""初始化描述汽车的属性"""self.make = make # 制作self.model = model # 模型self.year = year # 年份self.odometer = 0def get_read_odometer(self):"""获取汽车的里程信息"""print("此款"+self.make+self.model+'型车已行驶'+str(self.odometer) + '公里')def update_orometer(self,mileage):"""将里程表读数设置为指定的值禁止将里程表数让回调"""if mileage >= self.odometer:self.odometer = mileageelse:print("您的操作无效")def increment_odometer(self,miles):"""将里程表读数增加指定的量"""self.odometer += milesdef get_car_information(self):"""返回一些描述汽车的信息"""mesg_name = '生产于:'+str(self.year)+'年 --> 类型:'+self.make+' --> 型号:'+self.modelreturn mesg_namedef fill_gas_tank(self):"""模拟父类中fill_gas_tank()方法"""print("父类--->这个汽车没有油箱!")def print_info(self):"""打印汽车信息方法"""return print(self.get_car_information())
下面来创建另一个文件----->my_car.py,其中导入Car类并创建实例。
from car import Car
my_new_car = Car('奔驰','G500',2020)
print(my_new_car.get_car_information())
my_new_car.odometer = 34
my_new_car.get_read_odometer()
import语句让Python打开模块car,并导入其中的Car类。这样我们就可以使用Car类了。
运行结果:
生产于:2020年 --> 类型:奔驰 --> 型号:G500
此款奔驰G500型车已行驶34公里
8.5.2、在一个模块中存储多个类
虽然同一个模块中的类之间应存在某个相关性,但可根据需要在一个模块中存储任意数量的类。
下面将类Battery和ElectricCar都可帮助模拟汽车,因此下面将它们都加入模块car.py中:
from car import ElectricCar
my_moto = ElectricCar('小刀','A6',2019)
print(my_moto.get_car_information())
my_moto.battery.battery_value = 85
my_moto.battery.describe_battery()
my_moto.battery.get_range()
运行结果:
生产于:2019年 --> 类型:小刀 --> 型号:A6
这个电瓶电量:85-kWh
此电瓶续航 360 -公里
8.5.3、导入模块中的所有类
要导入模块中的每个类,可食用下面的语法:
from module_name import *
不推荐使用这种导入方式,其原因有二。首先,如果只要看一下文件开头的import语句,就能清楚地知道程序使用了哪些类,将大有裨益;但这种导入方式没有明确地指出你使用了模块中的哪些类。这种导入方式还可能引发名称方面的困惑。如果你不小心导入了一个与程序文件中其他东西同名的类,将引发难以诊断的错误。这里之所以介绍这种导入方式,是因为虽然不推荐使用这种方式,但你可能会在别人编写的代码中见到它。
需要从一个模块中导入很多类时,最好导入整个模块,并使用module_name.class_name语法来访问类。这样做时,虽然文件开头并没有列出用到的所有类,但你清楚地知道在程序的哪些地方使用了导入的模块;你还避免了导入模块中的每个类可能引发的名称冲突。
8.5.4、在一个模块中导入另一个模块
有时候,需要将类分散到多个模块中,以免模块太大,或在同一个模块中存储不相关的类。将类存储在多个模块中时,你可能会发现一个模块中的类依赖于另一个模块中的类。
from car import Car
class Battery():--略--
class ElectricCar(Car):--略--
8.0、Python基础---类(浅读)(下)相关推荐
- Python基础(类与对象)
Python基础(类与对象) 一.编程的两大思想 面向过程和面向对象 面向过程 面向对象 区别 事物比较简单,可以用线性的思维去解决 事物比较复杂,使用简单的线性思维无法解决 共同点:面向对象和面向过 ...
- python基础类型,Python基础-类
Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区 ...
- Python基础——类与对象
Python基础--类与对象 Python基础--类与对象 类与对象 数据类型 对象 类的创建 创建语法 类的创建 对象的创建 对象调用类中的内容 类属性,类方法,静态方法 类属性 访问类属性 类方法 ...
- Python基础——类属性、类方法、异常
文章目录 一.实例属性和类属性 1.类属性 2.实例属性 3.实例方法 二.实例方法.类方法和静态方法 1.实例方法 2.类方法 3.静态方法 三.__new__方法 三.单例设计模式 四.射击游戏 ...
- python 基础之文件读操作
创建一个名为'尘曦'的文件内容如下 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. ...
- python threading类重写_python下threading模块使用的注意点
python下threading模块使用的注意点 1. 线程执行代码的封装 通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用thre ...
- python基础十 函数(下)匿名函数、高阶函数、闭包、装饰器
目录 1. 匿名函数(lambda表达式) 2. 高阶函数 3. 函数的嵌套 4. nonlocal 关键字使用 5. 闭包 6. 装饰器 1. 匿名函数(lambda表达式) 简介 用一句话来表达只 ...
- Python基础——类(Class)
文章目录 1.class基本概念 2.init 功能 1.class基本概念 class 定义一个类, 后面的类别首字母推荐以大写的形式定义,比如Calculator. class可以先定义自己的属性 ...
- python入门教程廖雪峰-Python 入门1 浅读廖雪峰老师的网站入门教程
Photo by Julia 距离上次写学习笔记已经过去近三周了,五月玩的有点过于high了,加上陪胖哥慢慢步入细胞的殿堂也用去了较多时间.不管怎么说,自己立下的flag倒了也要马上扶起来,一切都不是 ...
最新文章
- div地址跳转 vue_vue---导航栏点击跳转到对应位置
- looper message handler之间的关系
- 软件测试工程师需要具备哪些能力
- element UI 制作带快捷选项的时间选择器
- pom.xml中的artifactId是什么意思?
- pandas.DataFrame.iterrows
- 《游戏编程模式》一7.8 并发状态机
- stm32f407 6个串口dma_stm32之DMA
- ijkPlayer 集成
- python渲染html页面_python接口自动化29-requests-html支持JavaScript渲染页面
- 简单python数据获取分析_python学习——简单数据分析
- log4j.xml配置示例
- android显示当前时间
- 你理解的精益可能是错的!——从源头重新解读精益
- PhantomJS的安装
- java五子棋网络版源码_网络版五子棋的java源代码.pdf
- 网赚项目分享:八条可以在线上做的副业兼职
- 大数据之大数据的典型应用
- poj 2942 Knights of the Round Table(双连通分量+tarjan+二分图判定)
- java开发面试复试_【java开发初轮技术面试以后 复试一般问什么?】-看准网