作者:从未止步…

博客主页:从未止步的博客

专栏:和我一起学Python

语录:Every day is a second chance

行动是理想最高贵的表达 ,给大家介绍一款超牛的斩获大厂offer利器——牛客网

快来和我一起刷题吧!!!

导入类的目的:

为了使文件尽可能的简洁,因此将类存储在模块中,在主程序中导入所需模块。

导入 单个类:

方法:from 文件名 import 类(文件名为要导入的类所存在的文件名) 在包含主程序的文件中运用from语句导入我们想要调用的类

from text import Car
my_new_car=Car("tisila","ab",2019)#对导入的类直接进行实例传递
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading=23
my_new_car.read_odometer()


输出结果:

2019 Tisila Ab
this car has 23 miles on it

导入类是一种有效的编程方式,如果这个程序包含整个类,那就会显得特别的繁多,通过将这个类移到一个模块中,并导入该模块,依然可以实现所有的功能,但主程序文件变得非常简洁易读。

在一个模块中,存储多个类:

虽然同一个模块中的类具有相关性,但你可根据自己的需求在一个模块中存储多个类。
例如,现在的text文件中,我们存放了两个类:

但主函数中我们又不想调用两个类,依然可以通过from语句实现存有多个类的文件中,某一个类的调用。

例如,我们现在导入ElectricCar类:

from text import ELectricCar
my_new_car=ELectricCar("tisila","ab",2019)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading=23
my_new_car.read_odometer()

输出结果:

__init__()方法被调用
2019 Tisila Ab
this car has 23 miles on it

从一个模块中导入多个类:

可根据自己的需求在程序文件中导入任意数量的类,方法:from 文件名 import 类1,类2,,,,
举例:

from text import ELectricCar,Car#导入ElectricCar类和Car类,不同类之间用逗号隔开
my_new_car=ELectricCar("tisila","ab",2019)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading=23
my_new_car.read_odometer()

导入整个模块:

还可以导入整个模块,再使用句点表示法访问需要的类,这种导入方式很简单,代码也易于阅读,因为创建的实例的代码都包含模块名,所以不会与当前文件使用的任何名称发生冲突。

方法:import 文件名
举例:

import  text#导入文件text里面的所有类
#调用ElectricCar类
my_new_car=text.ELectricCar("tisila","ab",2019)#注意调用方式是:文件名.类名
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading=23
my_new_car.read_odometer()
#调用People类
my_person=text.People("lisa",10000)
print(my_person.name)
print(my_person.money)

输出结果如下所示:

__init__()方法被调用
电瓶车的特点为:
None
this car has 23 miles on it
lisa
10000

该文件中包含的所有类都会被导入

导入模块中的所有类:

要导入模块中的每个类,可使用如下方法:

from  module_name(模块名)   import*

举例:

from  text import*
my_new_car=ELectricCar("tisila","ab",2019)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading=23
my_new_car.read_odometer()
my_person=People("lisa",10000)
print(my_person.name)
print(my_person.money)

输出结果如下所示:

__init__()方法被调用
电瓶车的特点为:
None
this car has 23 miles on it
lisa
10000

但我们并不推荐这种导入方式,有以下两个原因:
原因1:如果只看文件开头的Import语句,就能清楚地知道程序中使用了那些类,将可大大提高效率,然而这种导入方式没有明确的指出使用了模块中的那些类。
原因2:这种方式还有可能引发名称方面的迷惑,如果不小心导入了一个和程序文件中其他东西同名的类,将引发难以诊断的错误。

需要从一个模块中导入很多类时,最好导入整个模块,并使用module_name(模块名).Class_name(类名)语法来访问类,这样做,虽然文件开头没有列出用到的所有类,但你能清楚的知道在程序的那些地方使用了导入的模块,这样也避免了导入模块中,每个类可能引发的名称冲突。

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

有时候需要将类分散到多个模块,以免模块太大或者在同一个模块中存储不相关的类,将类存储在多个模块中时,你可能会发现一个模块中的类依赖于另一个模块中的类,在这种情况下,可在前一个模块中导入必要的类。
举例:

#分别从每个模块导入类
#ELectricCar作为Car的子类,在存储ELectricCar的模块中需要将父类导入
from electriccars import ELectricCar,Battery#ELectricCar,Battery存储在一个模块中
from  text import Car
my_new_cars=Car("tisila","ab",2019)
print(my_new_cars.get_descriptive_name())
my_electricCars=ELectricCar("小新","abc",2020)
my_electricCars.get_descriptive_name("小新")
my_electricCars=Battery()
my_electricCars.electric_battery()
汽车的特点为:
2019 Tisila Ab
__init__()方法被调用
小新是电瓶车
电池的容量为75

使用别名:

导入类时,也可指定别名。

例如,要在程序中创建大量的电动车实例,需要反复输入ElectricCars,非常麻烦,为避免这种烦恼,可在import语句中给ElectricCars指定一个别名:

from 模块名 import 类名  as 别名

举例:

from electriccars import ELectricCar as EC
my_electricCars=EC("小新","abc",2020)#在此后的调用中,直接使用别名
my_electricCars.get_descriptive_name("小新")
__init__()方法被调用
小新是电瓶车

自定义工作流程:

一开始应让代码结构尽可能简单,先尽可能在一个文件中完成所有的工作,确定一切都能正确运行后,再将类转移到单独的模块中,如果你喜欢和文件的交互方式,可在项目开始时就尝试将类存储在模块中,先找出让你能够编写出可行代码的方式,在尝试改进代码。

python标准库:

python标准库是一组模块,我们安装的python都包含它,也就是说我们可以使用其他程序员编写好的模块了,可以使用标准库中的任何函数和类,只需在程序开头包含一条简单的import语句即可。

举例:

#randint函数将两个整数作为参数
#并随机返回一个位于这两个整数之间(包含这两个整数)的整数
from random import randint#random随机模块
print(randint(1,9))

在random模块中,另一个有用的函数是choice(),它将一个列表或者元组作为参数,并随机返回其中的一个元素。

举例:

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

创建与安全相关的应用程序时,请不要使用模块random,但该模块可以很好地用于创建众多有趣的项目。

类编码风格:

类名应使用驼峰命名法,即将类名中的每个单词地首字母都要大写,而不使用下划线,实例名和模块名都使用小写格式,并在单词之间加上下划线。

对于每个类,都应紧跟在类定义后面包含一个文档字符串,这种文档字符串简要的描述类地功能,并遵循编写函数地文档字符串时采用的格式约定,每个模块也都应该包含一个文档字符串,对其中的类可用于进行什么描述。

可使用空格来组织代码,但不要滥用。在类中,可使用一个空行来分隔方法,而在模块中,可使用两个空行来分隔类。

需要同时导入标准库中的模块和自己编写的模块,先编写导入标准库模块中的import语句,在添加一个空行,然后编写导入自己编的模块的import语句,在包含多条import语句的程序中,这种做法更容易明白程序使用的各个模块来自何处

python之导入类相关推荐

  1. python 动态导入类_从动态导入模块中类的字符串名动态实例化?

    tl:博士 使用importlib.import_module导入根模块,并使用getattr函数按名称加载类:# Standard import import importlib # Load &q ...

  2. python如何导入类里_Python导入模块中的所有类(98)

    要导入模块中的每个类,可使用下面的语法: from mod import * 不推荐使用这种导入方式,其原因有二.首先,如果只要看一下文件开头的import语句,就能清楚地知道程序使用了哪些类,将大有 ...

  3. python导入类有红线_解决Python中导入自己写的类,被划红线,但不影响执行的问题...

    1. 错误描述 之前在学习Python的过程中,导入自己写的包文件时,与之相关的方法等都会被划红线,但并不影响代码执行,如图: 看着红线确实有点强迫症,并且在这个过程当时,当使用该文件里的方法时不会自 ...

  4. 【Python学习】导入类

    # _*_ coding:utf-8 _*_ """ name:zhangxingzai date:2022/11/20 form:<Python编程从入门到实践& ...

  5. python如何定义类_Python 面向对象

    Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...

  6. Python中的类、模块和包究竟是什么?

    Python培训教程:Python中的类.模块和包究竟是什么?在Python和其他编程语言中,都有类似或相同的概念,如对象.类.模块.包,名称都是一样的,只不过会有细微的一些区别,正是因为有这些存在, ...

  7. Python模块与类

    2019独角兽企业重金招聘Python工程师标准>>> 类 类的定义,继承 类中的属性,类属性和实例属性的区别及访问方式 变量名以"_"或"__&quo ...

  8. Python知识点7——类

    定义一个类 Python中,定义类的方式是:class classname(): class cat():def __init__(self, name, age):#Python中的构造函数,初始化 ...

  9. python怎么导入包-Python模块导入与包构建最佳实践

    [TOC] 最开始写程序的时候,都是一个文件里输入几行源码(python 的一个 web 框架bottle就特别强调自己是单文件框架).随着程程式变大变复杂,一个文件很难承载如此多的功能,因此将代码拆 ...

最新文章

  1. mysql 主主+ Keepalived 高可用
  2. java jdk目录_Java开发工具包JDK安装和目录介绍
  3. C语言学习之编程输入x,输出对应的y.
  4. java 常见bug_java常见bug
  5. 数据库MySQL/mariadb知识点——日志记录(2)二进制日志
  6. (转)SpringMVC学习(十一)——SpringMVC实现Resultful服务
  7. 【黑马程序员】————预处理指令2-文件编译
  8. HDU 5769 Substring(后缀数组)
  9. C#编译器对泛型方法调用作类型推断的奇怪问题
  10. csv逗号分隔符转换_文件系统(02):基于SpringBoot管理Xml和CSV
  11. zabbix开启网页报警声音方法:网页也可以有报警声音(46)
  12. 麦克斯韦方程组(彩图完美解释版)
  13. QT入门学习(一):什么是QT
  14. 设置/etc/fstab实现自动挂载
  15. ssm学生请假系统java学生请假系统源码
  16. 计算机作业我家乡的变化英语作文,我的变化英语作文3篇
  17. 我经历过的失败产品和项目(二):一款无疾而终的棋牌类游戏
  18. 消防应急疏散指示系统在学校项目上的应用
  19. 威纶通触摸屏232脚位_威纶通触摸屏使用手册
  20. 上位机和Arduino的通信的解决方案

热门文章

  1. 通过Ajax实现注册登陆的表单验证,一看就会。
  2. 实验方法怎么写_科研小白进阶路(二)之实验计划怎么写
  3. java根据两条直线的四个坐标点证明这两条线平行(计算直线斜率)或者三个点在一条直线上
  4. http_request
  5. [lintcode] 752. Rogue Knight Sven
  6. 女人要知道的311件事儿
  7. 精益生产计划如何制订,如何做好精益生产计划?
  8. TÜV莱茵提醒: 欧盟发布医疗器械在MDR宽限期的重大变更指南
  9. 什么是Linux CNC
  10. tingDesk模仿Metro风格