目录

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基础---类(浅读)(下)相关推荐

  1. Python基础(类与对象)

    Python基础(类与对象) 一.编程的两大思想 面向过程和面向对象 面向过程 面向对象 区别 事物比较简单,可以用线性的思维去解决 事物比较复杂,使用简单的线性思维无法解决 共同点:面向对象和面向过 ...

  2. python基础类型,Python基础-类

    Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区 ...

  3. Python基础——类与对象

    Python基础--类与对象 Python基础--类与对象 类与对象 数据类型 对象 类的创建 创建语法 类的创建 对象的创建 对象调用类中的内容 类属性,类方法,静态方法 类属性 访问类属性 类方法 ...

  4. Python基础——类属性、类方法、异常

    文章目录 一.实例属性和类属性 1.类属性 2.实例属性 3.实例方法 二.实例方法.类方法和静态方法 1.实例方法 2.类方法 3.静态方法 三.__new__方法 三.单例设计模式 四.射击游戏 ...

  5. python 基础之文件读操作

    创建一个名为'尘曦'的文件内容如下 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. ...

  6. python threading类重写_python下threading模块使用的注意点

    python下threading模块使用的注意点 1. 线程执行代码的封装 通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用thre ...

  7. python基础十 函数(下)匿名函数、高阶函数、闭包、装饰器

    目录 1. 匿名函数(lambda表达式) 2. 高阶函数 3. 函数的嵌套 4. nonlocal 关键字使用 5. 闭包 6. 装饰器 1. 匿名函数(lambda表达式) 简介 用一句话来表达只 ...

  8. Python基础——类(Class)

    文章目录 1.class基本概念 2.init 功能 1.class基本概念 class 定义一个类, 后面的类别首字母推荐以大写的形式定义,比如Calculator. class可以先定义自己的属性 ...

  9. python入门教程廖雪峰-Python 入门1 浅读廖雪峰老师的网站入门教程

    Photo by Julia 距离上次写学习笔记已经过去近三周了,五月玩的有点过于high了,加上陪胖哥慢慢步入细胞的殿堂也用去了较多时间.不管怎么说,自己立下的flag倒了也要马上扶起来,一切都不是 ...

最新文章

  1. div地址跳转 vue_vue---导航栏点击跳转到对应位置
  2. looper message handler之间的关系
  3. 软件测试工程师需要具备哪些能力
  4. element UI 制作带快捷选项的时间选择器
  5. pom.xml中的artifactId是什么意思?
  6. pandas.DataFrame.iterrows
  7. 《游戏编程模式》一7.8 并发状态机
  8. stm32f407 6个串口dma_stm32之DMA
  9. ijkPlayer 集成
  10. python渲染html页面_python接口自动化29-requests-html支持JavaScript渲染页面
  11. 简单python数据获取分析_python学习——简单数据分析
  12. log4j.xml配置示例
  13. android显示当前时间
  14. 你理解的精益可能是错的!——从源头重新解读精益
  15. PhantomJS的安装
  16. java五子棋网络版源码_网络版五子棋的java源代码.pdf
  17. 网赚项目分享:八条可以在线上做的副业兼职
  18. 大数据之大数据的典型应用
  19. poj 2942 Knights of the Round Table(双连通分量+tarjan+二分图判定)
  20. java开发面试复试_【java开发初轮技术面试以后 复试一般问什么?】-看准网

热门文章

  1. 算法基础课 acwing
  2. 【模考3】笨笨连线游戏
  3. MATLAB常用内部函数
  4. 基于HTTP协议用JAVA实现读取天气预报和twilio发送短信(无需审核)
  5. 诺基亚拟1.53亿美元收购软件公司Trolltech
  6. SwiftUI CloudKit 入门之 10 获取iCloud容器的API令牌
  7. WebApi后端框架Token身份认证,Api接口Token验证
  8. #for循环嵌套分析
  9. 深入浅出说Wi-Fi,买路由器必看
  10. 大疆 行者无疆(一)