Python:如何从两个模块导入同名类?

2 投票
2 回答
2569 浏览
提问于 2025-04-17 09:23

我正在写一个Python程序,用来在不同的数据库之间进行细粒度的同步。

我使用了SQLAlchemy和一个叫做sqlautocode的模块,用于检查数据库和生成模式类。

我有两个数据库需要同步,它们的表名是一样的,而sqlautocode生成的类名也就相同了。

我需要给这些类加上任意的前缀来区分,我在想可以这样做:

from module_name import * with prefixes

否则我就得用“as”修饰符来导入每个类的名字,像这样:

from module_name import x as master_x

在进行一些复杂的硬编码名称提取程序和控制列表的操作之前,我想先听听大家的建议。

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

谢谢大家!

2 个回答

1

在这种情况下,你不需要从模块中导入类。你只需要导入这两个模块。像这样:

import moda, modb

moda.MyClass()
modb.MyClass()

不过,这样做就不能使用一些很酷的工具,比如 pyflakes。所以我会选择稍微麻烦一点的方法(不过你只需要做一次,对吧?),就是用重命名的方式导入类。我非常支持 from x import something 这种写法,因为它能让你尽早发现错误。

8

只需要导入模块,不要试着从里面提取名字。其实,from X import Y这种写法应该偶尔用一下就好。

import module_a
import module_b

module_a.x
module_b.x

撰写回答