• python之导入类


    导入类的目的:

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

    导入 单个类:

    方法: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()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    输出结果:

    2019 Tisila Ab
    this car has 23 miles on it 
    
    • 1
    • 2

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

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

    虽然同一个模块中的类具有相关性,但你可根据自己的需求在一个模块中存储多个类。
    例如,现在的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()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出结果:

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

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

    可根据自己的需求在程序文件中导入任意数量的类,方法: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()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    导入整个模块:

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

    方法: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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    输出结果如下所示:

    __init__()方法被调用
    电瓶车的特点为:
    None
    this car has 23 miles on it 
    lisa
    10000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    该文件中包含的所有类都会被导入
    在这里插入图片描述

    导入模块中的所有类:

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

    from  module_name(模块名)   import*
    
    • 1

    举例:

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出结果如下所示:

    __init__()方法被调用
    电瓶车的特点为:
    None
    this car has 23 miles on it 
    lisa
    10000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    但我们并不推荐这种导入方式,有以下两个原因:
    原因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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    汽车的特点为:
    2019 Tisila Ab
    __init__()方法被调用
    小新是电瓶车
    电池的容量为75
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    使用别名:

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

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

    from 模块名 import 类名  as 别名
    
    • 1

    举例:

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

    自定义工作流程:

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

    python标准库:

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

    举例:

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

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

    举例:

    from random import choice
    players=["charles",'martina',"florence",'eli']
    first_up=choice(players)
    print(first_up)
    
    • 1
    • 2
    • 3
    • 4
    florence
    
    • 1

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

    类编码风格:

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

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

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

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

  • 相关阅读:
    补充记录sql基础语法(未完待续8/25)
    【刷题记录14】Java工程师丨腾讯面试真题(2)
    Python字符串介绍详解
    【ARXML专题】-26-Bit Rate相关参数:Tq,SJW,Sample Point,TDC...的定义
    win10 + VS2017 编译libjpeg(jpeg-9b)--更新
    【网络安全】Kail操作系统
    BGP基础
    HTTP复习(二)
    Redis数据类型——list类型介绍及基本操作
    【strlen()的使用方式】简洁明了初识C语言
  • 原文地址:https://blog.csdn.net/m0_64365419/article/details/125953971