【问题标题】:Python: How to import, from two modules, Classes that have same names?Python:如何从两个模块中导入具有相同名称的类?
【发布时间】:2012-01-31 18:57:24
【问题描述】:

我正在编写一个 python 程序来在不同数据库之间进行粒度同步。

我正在使用 SQLAlchemy 和一个名为 sqlautocode 的模块进行数据库检查和架构类生产。

有两个要同步的数据库,表名相同,sqlautocode 编写的类会产生相同的名称。

我必须导入带有任意前缀的这些类,我正在考虑这样的事情:

from module_name import * with prefixes

否则我应该使用“as”修饰符导入每个类名称,如下所示:

from module_name import x as master_x

第一个带有控制列表和 exec/eval 复杂代码的 HardCode 名称提取过程我想要一些关于它的建议。

更新: 解决方案是 sqlautocode 选项:--table-prefix=TABLE_PREFIX

谢谢大家

【问题讨论】:

  • 为什么不直接做import module_name, module2_name

标签: python class import


【解决方案1】:

只需导入模块,不要尝试从中提取名称。无论如何,from X import Y 应该偶尔使用。

import module_a
import module_b

module_a.x
module_b.x

【讨论】:

  • 我需要从中提取名称,答案是 whitin sqlautoconde command help:
【解决方案2】:

在这种情况下,您不必从模块中导入类。而是导入两个模块。像这样:

import moda, modb

moda.MyClass()
modb.MyClass()

另一方面,这不允许您使用像pyflakes 这样的酷工具。所以我会做艰苦的工作(你必须只做一次,对吗?)并通过重命名导入类。我是from x import something 的大力支持者,因为它可以让您尽早发现错误。

【讨论】:

  • 我需要从中提取名称。我在 sqlautocode 帮助中找到了答案:--table-prefix=TABLE_PREFIX
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-26
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
相关资源
最近更新 更多