当前位置: 首页 > 知识库问答 >
问题:

Python中依赖变量的导入

丌官坚秉
2023-03-14

我正在创建一个需要导入外部类的类,但是要导入的类的选择取决于一个变量,这个变量在类实例化之前是不知道的。模块文件结构是这样的:

root
| -myclass.py
| -pg
| | -tabledata.py
| -pandas
| | -tabledata.py

我的类构建为对以多种格式存储的数据集(例如,Pandas、Postgresql)进行操作,我需要根据使用的后端数据格式导入TableData类。

我想做这样的事

class MyClass:
    def __init__(self,backend):
        if backend == 'pg':
            from .pg.tabledata import TableData
        elif backend == 'pandas':
            from .pandas.tabledata import TableData
    ...

但这当然不允许我在MyClass的其他地方引用TableData类。有没有合适的方法来做这件事?

共有2个答案

江新
2023-03-14

importlib包有一个很好的import_module方法可以帮助实现这一点。查看https://docs.python.org/3/library/importlib.html#importlib.import_module。

鲜于光辉
2023-03-14

也许您可以同时导入和根据某种外部配置文件或通过运行代码时添加的某种标志,您可以决定调用哪个函数。

 类似资料:
  • 问题内容: 假设我具有以下目录结构: 在软件包的中,将导入软件包。但是进口。 程序失败,表示尝试导入b时不存在。(它实际上不存在,因为我们正在导入它。)`c_file.pya.b.d `如何解决这个问题? 问题答案: 如果a取决于c,而c取决于a,那么它们实际上不是同一单位吗? 您应该真正检查一下为什么将a和c拆分为两个包,因为您应该将一些代码拆分为另一个包(以使它们都依赖于该新包,而不是彼此依赖

  • 问题内容: 我有两个文件和,分别定义了两个类和。 直到今天,用于引用该对象的定义,因此我已经做了 在文件中。 但是,到目前为止,我已经为引用该对象的对象创建了一个新方法。 尝试导入时遇到了问题:我尝试了一下,当程序运行并调用了using的方法时,出现了一个未定义的异常。 我该怎么办? 问题答案: 导入Python模块 是一篇很棒的文章,介绍了Python中的循环导入。 解决此问题的最简单方法是将路

  • 问题内容: 假设我们有两个具有循环依赖性的模块: 这两个模块在目录中为空。如此答案中所述,导入或工作正常。如果我将进口改为相对进口) 我得到一个想要的模块的进口之一时: 为什么会出现此错误?情况与上面的情况大不相同吗? 编辑 :此问题与软件设计无关。我知道避免循环依赖的方法,但是无论如何我都对错误的原因感兴趣。 问题答案: 首先让我们从python的工作方式开始: 首先让我们看一下字节码: 嗯,有

  • 问题内容: 我想根据用户选择的值导入一些软件包。 默认值为: 如果用户选择,则应为: 在PHP中,我可以使用变量variable来做到这一点: 如何在Python中执行此操作? 问题答案: Python没有与PHP的“变量变量”直接等效的功能。要获取“变量变量”的值(或任何其他表达式的值),可以使用该函数。 但是,这不能在语句中使用。 可以使用该函数通过变量导入。 相当于

  • 问题内容: 我已经搜索了很多,但是我发现的主要是python中的递归编程示例。因此,问题来了: 我该如何实现? 问题答案: 一切在Python中都是动态的-甚至是类声明。在初始声明之后,没有什么可以阻止您修改类的内容的: 注意:如果您不太熟悉Python,则该关键字仅允许您说“这里什么都没有”-除非A类的空值与本例中的一样空,否则它并不重要!

  • 问题内容: 列出将工作项目部署到其他地方(例如,在不同的OS上)所需的所有依赖项的最有效方法是什么? Python 2.7,Windows开发环境,不是每个项目都使用virtualenv,而是全局开发环境,根据需要安装库,可以从一个项目跳到下一个项目。 我跟踪了必须为给定项目安装的大多数(不确定 所有 )库。我 没有 跟踪与它们一起自动安装的任何子依赖项。这样做同时列出,以及所有曾经被安装的其他库