python之导入类

简介: 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()

输出结果:

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))
7

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

举例:

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

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

类编码风格:

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

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


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


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

相关文章
|
18天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
37 5
|
1月前
|
索引 Python
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
16 1
|
1月前
|
Java C++ Python
Python基础---类
【10月更文挑战第10天】Python类的定义
21 2
|
1月前
|
设计模式 开发者 Python
Python类里引用其他类
Python类里引用其他类
|
1月前
|
设计模式 开发者 Python
Python 类中引用其他类的实现详解
Python 类中引用其他类的实现详解
36 1
WK
|
1月前
|
Python
Python类命名
在Python编程中,类命名至关重要,影响代码的可读性和维护性。建议使用大写驼峰命名法(如Employee),确保名称简洁且具描述性,避免使用内置类型名及单字母或数字开头,遵循PEP 8风格指南,保持项目内命名风格一致。
WK
13 0
|
1月前
|
程序员 开发者 Python
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
35 0
|
1月前
|
Python
Python中的类(一)
Python中的类(一)
|
1月前
|
Python
Python中的类(一)
Python中的类(一)
|
1月前
|
Python
Python中的类(二)
Python中的类(二)